opencv - 显示 UDP 组播 Rawvideo 流

标签 opencv ffmpeg udp video-streaming

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

是否需要设置任何参数(如 CvType)?

最佳答案

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

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

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

关于opencv - 显示 UDP 组播 Rawvideo 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60902660/

相关文章:

image-processing - 彩色边缘检测+opencv

c++ - 如何从ffmpeg获取文件描述符

video - ffmpeg:录制/捕获流并同时进行场景检测

python - "An integer is required error received for UDP server"

linux - 套接字接收队列中有多少数据包或字节?

opencv - OpenCV 中的 QR 分解

django - Python opencv等待相机空闲

python-3.x - 只批处理读取/将最后一张图像保存在文件夹中

c++ - FFMpeg 编码的视频只会在 FFPlay 中播放

java - 如何配置使用Netty的服务器发送UDP数据包的源端口?