我需要解码一个H264流,来自一个直播的DVR相机。为了方便示例,我将DVR摄像机的原始流存储在以下文件(test.h264)中:http://f.zins.com.br/test.h264
要解码活动流,我遵循以下ffmpeg示例:video.c
如果我用VLC打开.h264测试,图像看起来很完美。如果使用avformat_open_input和avformat_find_stream_info,用ffmpeg解码.h264测试,那么图像看起来也很完美。
但是,如果我使用video.c示例进行解码,图像都会被扭曲。我认为发生这种情况是因为与H264流一起可以有音频。
启用了ffmpeg的调试,它显示了许多以下错误:
[h264 @ 092a9b00] Invalid NAL unit 0, skipping.
[h264 @ 092a9b00] Invalid NAL unit 0, skipping.
[h264 @ 092a9b00] Invalid NAL unit 0, skipping.
[h264 @ 092a9b00] error while decoding MB 16 1, bytestream -28
[h264 @ 092a9b00] Invalid NAL unit 8, skipping.
[h264 @ 092a9b00] Invalid NAL unit 8, skipping.
[h264 @ 092a9b00] Invalid NAL unit 8, skipping.有没有办法让我只过滤视频和忽略音频从现场流?否则,是否有任何解决方案可以在不扭曲帧的情况下使用test.h264示例来解码decode_video.c?
扭曲的帧有时看起来像下面的图像,有时几乎全是灰色的。

发布于 2018-04-11 05:51:28
该流在原始h264数据包周围有mpeg包装器,我们需要首先对它们进行解析。如果您不能提供由ffmpeg支持的协议 (例如,udp://)之类的URL,则应该为您的活动流构建自定义的AVIOContext,并将其传递给
avformat_open_input(&fmt_ctx, NULL, NULL, NULL)类似于这个例子。
现在,您可以开始通常的demuxer循环
av_read_frame(fmt_ctx, &pkt)https://stackoverflow.com/questions/49739900
复制相似问题