web-dev-qa-db-ja.com

オーディオピッチを変更せずに、ffmpegを使用してオーディオ付きのビデオを高速化することは可能ですか?

元のオーディオとビデオの同期を維持しながら、「x1.25」または「x1.3」と言うことで、ビデオ(mp4、aacエンコードされたオーディオを使用)を高速化する比較的簡単な方法はありますか?オーディオ?

オーディオトラックを別のファイルに抽出することについてのいくつかの議論を読み、次にrubberbandを使用してピッチを必要な値だけ下げ、次にffmpegを使用してオーディオビデオトラックをスピードアップでマージします。オーディオを元に戻します。ただし、rubberbandはピッチを上げたり下げたりするためのパラメータとしてオクターブ数を使用しているように見えるため、これは少しヒットアンドミスのようです。これは、ビデオと常に完全に一致するとは限りません。音符/オクターブには特定の比率があります。また、これは面倒です。

それで、ffmpegだけを使用するより簡単な方法はありますか?

4
icarus74

これは、複雑なフィルターを使用してffmpgegで実行できます。

  ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

Doku: https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video

上記のコマンドは、速度を2倍にする場合に機能します。を掛けたい場合、パラメータは次のようになります。

  ffmpeg -i input.mkv -filter_complex "[0:v]setpts=<1/x>*PTS[v];[0:a]atempo=<x>[a]" -map "[v]" -map "[a]" output.mkv

たとえば、1.15を掛けたい場合、コマンドは次のようになります。

  ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.87*PTS[v];[0:a]atempo=1.15[a]" -map "[v]" -map "[a]" output.mkv
4
Weidenrinde