42

解码从基于 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!
4

3 回答 3

41

那只是意味着 ffmpeg 还没有看到一个关键帧,其中包含 SPS 和 PPS 信息。SPS 和 PPS 在解码传入的帧/片时至关重要。定期发送关键帧(即每 5-10 秒或更长时间);因此,如果事实证明您在关键帧到达之前加入了流;在关键帧出现之前,您将在每一帧看到此警告。

一旦关键帧从线路中显示出来,ffmpeg 将有足够的信息来解码该帧(以及直到下一个关键帧之前的任何后续帧),因此这些警告将消失。

于 2013-02-21T20:08:42.007 回答
3

你需要添加帧spspps信息。ffmpeg 需要这些信息来进行解码。您可以在 SDP 文件中找到这些值。

在 SDP 文件中,您应该查看 NAL 单元,您可以看到类似 z0IAHukCwS1xIADbugAzf5GdyGQl、aM4xUg

这些值基于 64 编码,您应该将其转换为十六进制格式。我正在使用 wireshark,wireshark 会为你自己转换这些值。之后,您将获得 sps 和 pps 值。

现在您必须在数据框之前添加这些 Nal 信息。

00 00 00 01 sps 00 00 00 01 pps 00 00 00 01 数据

对于 h264 这些格式我一直用来解码。

于 2015-08-11T06:53:56.813 回答
2

解码一个帧或一个切片,sliceHeader就是解码,它指的是一个PPS或“图片参数集”。它包含有关框架细节的信息,如宽度、高度等。

我猜您的数据来自流输入通道,在这种情况下,SPS 和 PPS 将在流中较早发送。

您可能必须将其连接到您的流中。

于 2013-02-21T16:32:17.623 回答