gpt4 book ai didi

opencv - 在 Ubuntu 上使用 OpenCV 的 ffmpeg 解码 h264(高)流

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:36 30 4
gpt4 key购买 nike

我在 Ubuntu 14.04 上处理来自网络摄像头的视频流。使用具有这些参数(来自 FFMPEG)的相机一切都很顺利:

    Stream #0:0: Video: h264 (Main), yuv420p(progressive), 352x192, 29.97 tbr, 90k tbn, 180k tbc

但后来我换了一个较新的相机,它有这些参数:

    Stream #0:0: Video: h264 (High), yuvj420p(pc, bt709, progressive), 1280x720, 25 fps, 25 tbr, 90k tbn, 50 tbc

我的 C++ 程序使用 OpenCV3 来处理流。默认情况下,OpenCV 使用 ffmpeg 解码和显示带有函数 VideoCapture 的流。

VideoCapture vc;
vc.open(input_stream);
while ((vc >> frame), !frame.empty()) {
*do work*
}

使用新的摄像头流时,我会收到如下错误(来自 ffmpeg):

[h264 @ 0x7c6980] cabac decode of qscale diff failed at 41 38
[h264 @ 0x7c6980] error while decoding MB 41 38, bytestream (3572)
[h264 @ 0x7c6980] left block unavailable for requested intra mode at 0 44
[h264 @ 0x7bc2c0] SEI type 25 truncated at 208

图像有时会出现故障,有时会完全卡住。然而在 vlc 上它播放完美。我安装了最新版本 (3.2.2) 的 ffmpeg 播放器

./configure --enable-gpl --enable-libx264

现在直接使用 ffplay 播放(而不是使用 OpenCV 函数 VideoCapture 从源代码启动),流播放效果更好,但有时仍会显示警告:

[NULL @ 0x7f834c008c00] SEI type 25 size 896 truncated at 320=1/1   
[h264 @ 0x7f834c0d5d20] SEI type 25 size 896 truncated at 319=1/1
[rtsp @ 0x7f834c0008c0] max delay reached. need to consume packet
[rtsp @ 0x7f834c0008c0] RTP: missed 1 packets
[h264 @ 0x7f834c094740] concealing 675 DC, 675 AC, 675 MV errors in P frame

更改相机硬件不是一种选择。可以将相机设置为编码为 h265 或 mjpeg。当编码为 mjpeg 时,它可以输出 5 fps,这是不够的。解码为静态视频也不是一个选项,因为我需要显示有关流的实时结果。 Here是可在函数 VideoCapture 中使用的 API 后端列表。也许我应该换用其他解码器和播放器?根据我的研究,我得出结论,我有以下选择:

  • 以某种方式让 OpenCV 使用 libVlc 而不是 ffmpeg

切换到 vlc 的一个例子是 here ,但我不太了解它是否是我需要的。或者我应该是 parsing代码中的流?

  • 按照建议使用 vlc 预处理流 here .

这可能很慢,这又对实时结果不利。
任何建议和意见将不胜感激。

最佳答案

错误是由于丢包造成的,因为它默认使用RTP。您现在看到更多错误,因为您已切换到更高的比特率输入。

?tcp 附加到您的输入中,例如。 rtsp://*private*/media/video2?tcp 在 OpenCV 的 open 函数中强制使用 TCP,前提是您的硬件和/或使用场景支持它。

关于opencv - 在 Ubuntu 上使用 OpenCV 的 ffmpeg 解码 h264(高)流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41265729/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com