AVAssetWriter で書き込んだ H.264 mov ファイルを同時に読み書きしようとしています。個々の NAL ユニットを抽出し、それらを ffmpeg の AVPackets にパックし、ffmpeg を使用して別のビデオ形式に書き込むことができました。それは機能し、再生速度が正しくないことを除いて、結果のファイルはうまく再生されます。生の H.264 データから正しい PTS/DTS 値を計算するにはどうすればよいですか? または、それらを取得する他の方法が存在する可能性がありますか?
これが私が試したことです:
キャプチャの最小/最大フレーム レートを 30 に制限し、出力ファイルが 30 fps になると仮定します。実際、その fps は常に設定した値よりも低くなります。また、fps はパケットごとに一定ではないと思います。
書き込まれた各サンプルのプレゼンテーション タイムスタンプを記憶し、サンプルが 1 対 1 で NALU にマッピングされ、保存されたタイムスタンプを出力パケットに適用すると仮定します。これはうまくいきません。
PTS を 0 または AV_NOPTS_VALUE に設定します。うまくいきません。
それについてグーグルで調べたところ、生のH.264データには通常、タイミング情報が含まれていないことがわかりました。SEI内にタイミング情報が含まれている場合がありますが、私が使用するファイルには含まれていません。一方で、私がやろうとしていることを正確に実行するアプリケーションもいくつかあるので、何とか可能だと思います。