H.264ベースのリモートエンドから受信したH.264フレームをデコードすると、次のエラーが表示されますSIP=ビデオコール。エラーを理解する上で助けてください。
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!
これは、ffmpegがまだSPSおよびPPS情報を保持するキーフレームを認識していないことを意味します。SPSおよびPPSは着信フレーム/スライスのデコードに重要です。キーフレームは定期的に(つまり5〜10秒以上)送信されるため、キーフレームが到着する前にストリームに参加したことが判明した場合、キーフレームが表示されるまですべてのフレームに対してこの警告が表示されます。
キーフレームがワイヤから表示されるとすぐに、ffmpegにはそのフレーム(および次のキーフレームまでの後続のフレーム)をデコードするのに十分な情報があるため、これらの警告は消えます。
フレームを追加する必要がありますspsおよびpps情報。 ffmpegは、デコードを行うためにこれらの情報を必要とします。これらの値はSDPファイルにあります。
SDPファイルでは、NALユニットを見る必要があります。z0IAHukCwS1xIADbugAzf5GdyGQl、aM4xUgのようなものが表示されます。
これらの値は64エンコードされているため、16進形式に変換する必要があります。私はwiresharkを使用していますが、wiresharkはこれらの値を自動的に変換します。その後、spsとppsの値があります。
次に、データフレームの前にこれらのNal情報を追加する必要があります。
00 00 00 01 sps 00 00 00 01 pps 00 00 00 01データ
h264の場合、これらの形式はデコードに使用されています。
フレームまたはスライスをデコードするために、sliceHeader
がデコードされます。これはPPSまたは「Picture Parameter Set」を参照します。幅などのフレームの詳細に関する情報があります。高さなど.
あなたのデータはストリーミング入力チャンネルを介して送られていると思います。その場合、SPSとPPSはストリームの早い段階で送信されていたでしょう。
同じものをストリームに連結する必要がある場合があります。