FFMPEGを使用してビデオを変換します。私の目標は、AACエンコードされたオーディオストリームとMPEG-4パート10エンコードされたビデオストリームを使用して、それらをMP4コンテナー形式(MPEG-4パート14)に変換することです。
次の行を使用してビデオを変換します。
ffmpeg -y -i "{inputFile}" "{outputFile}"
変換されたビデオは正常に見えますが、変換されたファイルと入力ファイルのストリームの長さが常に一致するとは限りません。
私はいくつかの実験を行いましたが、デュレーションの違いは間違いなくそこにありますが、それほどではありません-とにかく私は小さなビデオでテストしています。これが私の結果です:
| InputFile  | InputAudio | InputVideo | OutputAudio | OutputVideo  |
|------------|------------|------------|-------------|--------------|
| h.avi      | 3s 631ms   | 3s 567ms   | 3s 668ms    | 3s 567ms     |
| h.flv      | 3s 631ms   | 3s 558ms   | 3s 668ms    | 3s 567ms     |
| h.mov      | 3s 532ms   | 3s 533ms   | 3s 682ms    | 3s 534ms     |
| h.mp4      | 3s 605ms   | 3s 534ms   | 3s 682ms    | 3s 567ms     |
| h.mpg      | 3s 605ms   | 3s 533ms   | 3s 563ms    | 3s 534ms     |
| h.wmv      | 3s 620ms   | 3s 633ms   | 3s 659ms    | 3s 567ms     |
私はFFMPEGの上にソフトウェアを構築するので、少なくともこの違いの理由を理解できれば幸いです。不要なトランスコーディングが原因ですか?
この場合、FFMPEGが入力ビデオファイルをリサンプリングしないように、このトランスコーディングをオフにできますか?
オフにできない場合、(テスト以外に)この違いがビデオのサイズに比例していないことをどのように確認できますか?
たとえば10時間のビデオを変換する場合、数秒から数分の差は私には適していません。