私は、ビデオ伝送におけるネットワーク損失の影響に取り組んでいます。ネットワーク損失をシミュレートするために、H.264 RTP エンコーディングの出力からランダムな RTP パケットをドロップする単純なプログラムを使用します。
ビデオをエンコードするために、ジョイント モデル (JM) 14.2 を使用します。ただし、出力として AnnexB 形式を使用せず、代わりに出力を RTP パケットとして選択します。JM 出力は、RTP ヘッダーとペイロードをシーケンスとして持つ RTP パケットとして生成されます。その後、簡単なプログラムを使用して RTP パケットの一部をドロップします。次に、JM も使用して出力ビットストリームをデコードできます。これはエラー隠蔽方法です。
このプロセスの主な目的は、ネットワーク損失によって人間のビデオ品質の知覚に生じる違いを評価することです。知覚される品質を測定するには、表示されるビデオがデコードされた形式 (フル解像度) であるか、受信側でデコード可能である必要があります。JM Encoder によって作成された RTP パケットは、JM ソフトウェアがインストールされていないとデコードできません。ただし、適切なヘッダー (またはコンテナー) を使用すると、ほとんどのビデオ プレーヤーでビットストリームをデコードできます。したがって、この質問での私の目標は、エンコードされた RTP パケット ビットストリームを AVI や MP4 などの一般的なコンテナーにカプセル化し、コンテンツを受信側コンピューターでデコードできるようにすることです。
RTP パケット化された形式でエンコードされたビットストリームの形式は次のとおりです。
----------------------------------------------------------------------
| RTP Header #1 | RTP Payload #1 | RTP Header #2 | RTP Payload #2 |...
----------------------------------------------------------------------
ビデオの品質を確認するために、これらのビットストリームで主観的なテストを行いたいと思います。これらのテストは、自分でデコードしたフル解像度のデータを使用して行うことができますが、この主観的なテストをインターネット上の数 GB のビデオ データでクラウドソーシングするのは非常に不便です。そこで、FFMPEG を使用して、これらのビットストリームをコンテナー (つまり AVI) に多重化したいと考えています。これらのビットストリームを FFMPEG と FFPLAY でデコードしようとしました。ただし、どちらも機能しませんでした。次のコマンドも試しましたが、うまくいきませんでした。
ffmpeg - f h264 -i <raw_rtpDropped.264> -vcodec copy -r 25 out.avi
どのフォーマットまたはマルチプレクサを使用すればよいですか? これらのファイルを他の形式に変換する必要はありますか?