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

フレームのspsおよびpps情報を追加する必要があります。ffmpeg は、デコードを行うためにこれらの情報を必要とします。これらの値は SDP ファイルにあります。

SDPファイルでは、NALユニットを見る必要があります.z0IAHukCwS1xIADbugAzf5GdyGQl、aM4xUgのようなものを見ることができます

これらの値は base64 でエンコードされているため、16 進形式に変換する必要があります。私は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 に答える