如何通过 OpenCV 处理 VLC UDP 流

JS

我能够通过 VLC 命令行接收/查看 UDP h264 数据包(即 VLC --network-caching 0 --demux h264 udp://...)

我计划通过 OpenCV 算法处理这些帧。但是,我似乎找不到将 VLC 帧发送到我的 Python OpenCV 脚本的方法。

是否可以通过管道在单独的脚本中通过 Numpy 处理 VLC 流输出?

我之前曾尝试使用其 VideoCapture 功能直接流式传输到 OpenCV,但由于某种原因,视频停顿并停止在扭曲的黑色图像上。目前,似乎合并 VLC 是唯一的解决方案(尽管我不完全确定为什么 VLC 优于其他方法)。

谢谢你。

编辑:

以下是终端上的错误消息片段。前几帧似乎有问题,但我不知道为什么该流在 VLC 上有效。从客户端,我首先发送一个默认的关键帧数据,然后发送视频源 h264 数据。

[h264 @ 0x7f9c50020200] top block unavailable for requested intra mode -1
[h264 @ 0x7f9c50020200] error while decoding MB 7 0, bytestream 7208
[h264 @ 0x7f9c50020200] top block unavailable for requested intra mode -1
[h264 @ 0x7f9c50020200] error while decoding MB 8 9, bytestream 7381
辛达罗德

您可以使用ffmpeg进行流式传输。

首先在终端中测试 ffmpeg 流。在 linux 中,我们使用v4l2从相机抓取帧。

服务器:

ffmpeg -f v4l2 -i /dev/video0 -preset ultrafast -vcodec libx264 -tune zerolatency -b 900k -f h264 udp://127.0.0.1:5000

客户

ffplay udp://127.0.0.1:5000

如果您能够在客户端查看流,那么我们可以使用 OpenCV 进行图像处理。OpenCV 必须有 ffmepg 支持。请参阅此链接以获取 ffmpeg 支持检查。

    cap = cv2.VideoCapture('udp://127.0.0.1:5000',cv2.CAP_FFMPEG)
    if not cap.isOpened():
        print('VideoCapture not opened')
        exit(-1)

    while True:
        ret, frame = cap.read()

        if not ret:
            print('frame empty')
            break

        cv2.imshow('image', frame)

        if cv2.waitKey(1)&0XFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用OpenCV和Python在视频流中逐帧处理视频图像

来自分类Dev

如何处理流HTTP GET数据?

来自分类Dev

如何处理流?

来自分类Dev

如何使用AVPlayer处理流错误

来自分类Dev

捕获UDP流数据

来自分类Dev

如何使用OpenCV(Python)捕获视频流

来自分类Dev

如何处理子流

来自分类Dev

如何通过C在Linux(RPi)中进行音频流处理?

来自分类Dev

在VLC中记录UDP流的丑陋骇客。

来自分类Dev

将OpenCV输出发送到VLC流

来自分类Dev

无法从OpenCV Gstreamer接收gstreamer UDP流

来自分类Dev

如何处理张量流

来自分类Dev

如何使用提取处理流数据?

来自分类Dev

如何在VLC中播放RTMP流?

来自分类Dev

通过UDP的低延迟实时音频流

来自分类Dev

如何通过命令行在VLC中播放MMS流?

来自分类Dev

VLC故障流

来自分类Dev

如何使用Java从FFMpeg通过UDP接收Mpeg-ts流

来自分类Dev

如何将重复的RTP流与VLC同步?

来自分类Dev

VLC:如何自动启动来自linein或mic in的音频流?

来自分类Dev

如何记录与VLC保持断开连接的RTMPT流?

来自分类Dev

Vlc检查流状态

来自分类Dev

通过UDP传输TS音频流时出错

来自分类Dev

如何更改VLC存储其流的文件夹?

来自分类Dev

如何在VLC上禁用YouTube视频流?

来自分类Dev

来自 VLC 的 udp 直播流的屏幕截图,使用 ffmpeg

来自分类Dev

如何在 javascript web 客户端中播放 PCM 流(通过 UDP)?

来自分类Dev

python 如何在调用流取消()后处理grpc流

来自分类Dev

无法从 opencv4nodejs 读取 h264 中的 UDP 网络流