我使用live555接收RTP视频帧(在H264中编码的帧)。我使用Live555打开我的本地.sdp文件来接收帧数据。我刚刚看到DummySink :: afterGettingFrame被不断调用。如果DummySink中的fReceiveBuffer是正确的,为什么FFMPEG无法解码帧?我的代码错了?
这是我的代码段: http://paste.ubuntu.com/12529740/
函数avcodec_decode_video2始终返回失败,其值小于零
fReceiveBuffer存在一个视频帧?
哦,这是我的FFMPEG初始化代码需要打开相关的视频解码器: http://paste.ubuntu.com/12529760/
答案 0 :(得分:0)
我再次阅读了与H264相关的文档,我发现I帧(IDR)需要SPAND / PPS分隔0x00000001插入标头,解码器有能力正确解码帧。这是一个相关的解决方案 FFmpeg can't decode H264 stream/frame data
Decoding h264 frames from RTP stream
现在,My App工作正常,它可以解码帧并将其转换为OSD图像以显示到屏幕。