【问题标题】:Displaying UDP Multicast Rawvideo Stream显示 UDP 组播 Rawvideo 流
【发布时间】:2020-07-09 04:12:54
【问题描述】:

如上所述,我通过 UDP 使用 FFmpeg(命令行)流式传输网络摄像头。在客户端,我使用 Java OpenCV,捕获线; VideoCapture.open("udp://xx.xx.xx.xx:xx)。如果我将流作为 mpegts (ffmpeg -f mpegts) 发送,我可以显示流但是;如果我以 rawvideo (ffmpeg -f rawvideo) 的形式发送它,我就不能。

有需要设置的参数吗(比如CvType)?

【问题讨论】:

    标签: opencv ffmpeg udp video-streaming


    【解决方案1】:

    Mpegts 具有专门为通过单向有损传输(如 UDP 或数字电视)传输而设计的属性。它有每 100 毫秒重复一次的数据包,告诉阅读器如何引导解码,它有帧开始标志(有效负载单元开始指示符),它有一个数据包计数器来检测跳过和乱序数据包,以及其他几个重要功能。

    原始视频没有这些。它只是一堆字节。如果单个数据包丢失(包括第一个数据包),解码器将不知道帧的开始和结束在哪里,并且无法重建流。

    因此,视频工具通常不支持此类功能。如果您需要发送原始视频,请使用 TCP 而不是 UDP。

    【讨论】:

    • 感谢 szatmary,这个解释对我很有用,但我想知道如果我使用 udp,我可以使用 ``ffmpeg -f avfoundation -i "0" -pix_fmt yuv420p -f 流式传输网络摄像头rawvideo -pix_fmt yuv420p udp://@236.0.0.1:2000```(在 Mac 上)并且可以使用 ffplay -f rawvideo -pix_fmt yuv420p -video_size 1280x720 -i udp://236.0.0.1:2000 捕获和显示。我的目标是视频上的图像处理(基本功能、调整亮度、对比度等),所以我试图通过 OpenCV 显示。 @szatmary,对于实现目标还有其他建议吗?
    • 理论上是可以的,但在实践中你会遇到很多很多问题。
    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 2012-07-30
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多