如上所述,我通过 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/