I am getting the following errors when decoding H.264 frames received from the remote end of a H.264 based SIP video call. Appreciate any help in understanding there errors.
That just means that ffmpeg has not seen a keyframe yet, which carries SPS and PPS information. SPS and PPS are crucial in decoding an incoming frame/slice. Keyframes are sent periodically(i.e. every 5-10 seconds or more); so if turns out that you joined a stream before the keyframe arrived; you will see this warning for every frame until a keyframe shows up.
As soon as the keyframe shows up from the wire, ffmpeg will have enough information to decode that frame(and any subsequent frames until the next keyframe), so those warnings will go away.
To decode a frame or a slice, sliceHeader
is decoded, which refers to a PPS or "Picture Parameter Set". It has information regarding the specifics of the frame like width, height etc.
I guess your data is coming through a streaming input channel, in which case SPS and PPS would have been sent earlier in the stream.
You may have to concatenate the same to your stream.
you need to add frames sps and pps information. ffmpeg needs these information to make decoding. You can find these values in SDP file.
In SDP file, you should look NAL units, you can see something like that z0IAHukCwS1xIADbugAzf5GdyGQl, aM4xUg
these values based64 encoded you should convert it to hex format. I am using wireshark and wireshark converts itself these values for you. After that you have sps and pps values.
Now you have to add these Nal information before data frame.
00 00 00 01 sps 00 00 00 01 pps 00 00 00 01 data
for h264 these format i have been using to decode.