2013-02-21 121 views
28

H.264ベースのSIPビデオコールのリモートエンドから受信したH.264フレームを復号するときに、次のエラーが発生します。エラーを理解するのに役立ちます。ffmpegを使用して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! 

答えて

24

これは、ffmpegがSPSとPPS情報を運ぶキーフレームをまだ見ていないことを意味します。 SPSとPPSは、着信フレーム/スライスをデコードする際に重要です。キーフレームは定期的に送信されます(5~10秒ごとなど)。キーフレームが到着する前にストリームに参加したことが分かった場合は、キーフレームが表示されるまで、この警告がフレームごとに表示されます。

ffmpegには、キーフレームが表示されるとすぐに、そのフレーム(および次のキーフレームまでのフレーム)をデコードするのに十分な情報があるため、それらの警告は消えます。

+0

これは問題のようです。リモートエンドは、クライアントがSIP INFOを使用してそれを要求しても、キーフレームを送信していません。どのようにこれを解決することができる任意のアイデア?リモート側でBriaの古いバージョンを使用しています。 –

+0

リモート側はキーフレームを送信していませんか?それは非常に奇妙です。 Briaにキーフレーム間隔を設定するオプションがあるかどうかは不明ですが、検討する価値があります。だから一般的に、あなたは遠隔地からのビデオを一切見ていないか、それを見るのに時間がかかりますか? – Aki

+0

ビデオが全くありません –

2

フレームまたはスライスを復号するために、sliceHeaderはPPS又は「ピクチャ・パラメータ・セット」を指し、復号化されます。

あなたのデータはストリーミング入力チャンネルから来ていると思います。この場合、ストリームの前にSPSとPPSが送られているはずです。

ストリームに連結する必要がある場合があります。

2

フレームを追加する必要がありますspspps情報を追加する必要があります。 ffmpegはこれらの情報をデコードする必要があります。 SDPファイルでこれらの値を見つけることができます。

SDPファイルでは、NALユニットを見なければならない、あなたはそのz0IAHukCwS1xIADbugAzf5GdyGQl、aM4xUg

あなたが進形式に変換する必要があり、符号化based64これらの値のようなものを見ることができます。私はwiresharkを使用しており、wiresharkはあなた自身のためにこれらの値を変換します。その後、spsとppsの値があります。

これらのNal情報をデータフレームの前に追加する必要があります。

00 00 00 01 SPS 00 00 00 01 PPS 00 00 00 01データH264 iをデコードするために使用されてきたこれらのフォーマットの

関連する問題