在解码从基于H.264的SIP视频呼叫的远程端接收的H.264帧时,我遇到以下错误。理解有关错误的任何帮助。
non-existing PPS 0 referenced
decode_slice_header error
non-existing PPS 0 referenced
decode_slice_header error
no frame!
non-existing PPS 0 referenced
decode_slice_header error
non-existing PPS 0 referenced
decode_slice_header error
no frame!
答案 0 :(得分:28)
这只意味着ffmpeg还没有看到一个带有SPS和PPS信息的关键帧。 SPS和PPS在解码输入帧/切片时至关重要。关键帧定期发送(即每5-10秒或更长时间);所以,如果你在关键帧到达之前加入了一个流,那么在关键帧出现之前,您将看到每个帧的此警告。
一旦关键帧从线上显示出来,ffmpeg将有足够的信息来解码该帧(以及任何后续帧直到下一个关键帧),因此这些警告将消失。
答案 1 :(得分:2)
要解码帧或切片,sliceHeader
将被解码,这是指PPS或“图片参数集”。它有关于框架细节的信息,如宽度,高度等。
我猜你的数据是通过流输入通道传输的,在这种情况下,SPS和PPS会先前在流中发送。
您可能必须将相同内容连接到您的流。
答案 2 :(得分:2)
您需要添加框架 sps 和 pps 信息。 ffmpeg需要这些信息才能进行解码。您可以在SDP文件中找到这些值。
在SDP文件中,你应该看看NAL单位,你可以看到像z0IAHukCwS1xIADbugAzf5GdyGQl,aM4xUg
这样的东西这些基于64编码的值应该将其转换为十六进制格式。我正在使用wireshark和wireshark为你自己转换这些值。之后你有sps和pps值。
现在您必须在数据框之前添加这些Nal信息。
<00> 00 00 00 01 sps 00 00 00 01 pps 00 00 00 01数据对于h264这些我一直用来解码的格式。