1つのビデオトラック(H.264、25 FPS)と1つのオーディオトラック(MP2)を含む.MP4ファイルがあります。全長は約2:52(2時間52分)です。 A/Vは2:34までは同期しているが、その後は非同期であることに気づきました。つまり、オーディオは約0.3秒遅れています。
私の計画は
完了。しかし、ビデオの冒頭からA/Vが同期していなかったため、結果は満足のいくものではありませんでした。元のファイルを詳しく調べて、タイムスタンプをダンプしました。ビデオトラックの最小PTSは0.16秒で、PTSはすべて0.04増加し、ギャップはありません。オーディオトラックの最小PTSは0.212秒で、ほとんどのPTSは24ミリ秒増加します(MP2の場合は通常)が、24ミリ秒よりも小さいまたは大きい差分はほとんどありません(これは問題ありませんが、トラックを抽出するときに明らかに問題があります。質問を参照してください。未満)
私の質問は次のとおりです。MP2に抽出するときにタイムスタンプが失われますか?それから私の最初の計画は予見されます。 MP4ファイル内のオーディオトラックの小さな部分をカットする他の方法はありますか?もちろん、オーディオを再エンコードする必要はありません。私はFFmpegとAviDemuxに精通しています。
解決策は次のとおりです。
特定のFFmpegコマンドについては、@ Mulvyaからの上記のコメントを参照してください。彼/彼女のサポートに改めて感謝します。
MP2に抽出するときにタイムスタンプが失われますか?
はい。 .mp2/.mp3
にはタイムスタンプがありません。
MP4ファイル内のオーディオトラックの小さな部分をカットする他の方法はどれですか?
MP2をサポートするタイムスタンプを持つコンテナ(MPEG-TS、MP4/MOV、MKVなど)。他にもあるかもしれません。
Concatdemuxerを試してください。
ffmpeg -i in.mp4 -f concat -i audio.txt -map 0:v -map 1:a -c copy out.mp4
どこ audio.txt
は
file in.mp4
outpoint 2:34:00
file in.mp4
inpoint 2:34:00.30