Ffmpeg无法初始化通过RTP Payload接收的H264帧数据的swsContext

时间:2015-03-26 15:38:55

标签: ffmpeg h.264 rtsp rtp payload

我正在尝试解码通过RTSP流接收的H264视频帧。

我关注了这篇文章:How to process raw UDP packets so that they can be decoded by a decoder filter in a directshow source filter

我能够确定框架的开始和在RTP数据包中结束帧并重建我的视频帧。

但我没有收到来自我的RTSP会话的任何SPS,PPS数据。我在 SDP(会话描述协议)中查找字符串" sprop-parameter-sets" ,但没有。

从RTP数据包重建视频帧:

第一个RTP数据包中的有效载荷如下:" 1c 80 00 00 01 61 9a 03 03 6a 59 ff 97 e0 a9 f6"

这表示它是一个零散的数据(" 1C" )和框架的开头(" 80" )。我复制了有效载荷数据的其余部分(前2个字节除外;#34; 1C 80")

以下RTP数据包有"有效负载"从" 1C 00" 开始,这是帧数据的延续。我不断将有效载荷数据(前2个字节" 1C 00" 除外)添加到字节缓冲区中,用于以下所有RTP数据包。

当我得到带有效载荷的RTP数据包以" 1C 40" 开始,这是帧的结尾时,我复制了剩余的有效载荷数据(除了前2个)字节" 1C 40" )该RTP数据包进入字节缓冲区。

因此,我将视频帧重建为字节缓冲区。

然后我先将4字节 [0x00,0x00,0x00,0x01] 添加到字节缓冲区,然后发送到解码器,因为我没有收到任何SPS,PPS NAL字节。

当我将此字节缓冲区发送到解码器时,解码器在尝试初始化sws Context 时失败。

我是否正确发送了NAL字节和视频帧数据?

0 个答案:

没有答案