だから私はすべてのテレビエピソードをスピードアップしようとしています(それらのいくつかは本当に遅いペースであるため)。ソースは30fpsです。そして、すでに次のコマンドでこれを実行しようとした場合:( setpts値を作成する方が簡単なのでx1.6を実行しています(そうでない場合は0.66666666666 ...)
ffmpeg -i VideoOriginal.mkv -r 48 -filter:v "setpts=0.625*PTS" VideoSpeedup.mkv
ただし、ここでのファイルサイズははるかに小さくなります(品質のプリセットも使用する必要がありますか?)。ファイルの長さは40分で、10分後にほとんど壊れます(VLCはタイムスタンプを誤って解釈し始め、プレーヤーはほとんど失敗します)。
また、この方法ではオーディオが高速化されません。
これを改善するためのヒントはありますか?
(「すべてのフレームを保持」したい理由。x1.6を使用するので、48 fpsしか実行できないため、実際に失われたり、新しいフレームを生成したりする必要はありません。)
編集:私の元のファイルのfpsが23.97612であることに気づきました....それは物事をより複雑にするでしょう...?
ビデオ速度を変更する場合、通常は-r
を設定する必要はありませんが、ffmpegにフレームのタイムスタンプを変更させるだけです。これによりフレームドロップが発生する可能性があります。もちろん、試したとおりに適切なフレームレートを設定することで回避できますが、設定する必要がありますafter入力仕様。
ビデオとオーディオの両方を高速化するには:
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.625*PTS[v];[0:a]atempo=1.6[a]" -map "[v]" -map "[a]" output.mkv
オーディオテンポは、フレームのタイムスタンプを変更する係数の逆数です。そしてフレームレートの変更で:
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.625*PTS[v];[0:a]atempo=1.6[a]" -r 48 -map "[v]" -map "[a]" output.mkv
しかし、ここのファイルサイズははるかに小さいです
これは、すべてが再エンコードされるためです。通常、libx264
はビデオエンコーディングに使用されます。デフォルトの品質は良好なはずですが、たとえば-crf
オプションを使用して変更できます。詳細については、 H.264エンコーディングガイド を参照してください。
Playbackメニューから再生を高速化するようにVLCに指示することもできます。これにより、速度変更の不要な変換とハードコーディングが回避されます。
(質問でVLCについて言及したため...)
VLCで、Playback
メニューに移動し、_Speed/Faster
_またはSpeed/Faster (fine)
を選択します。
編集:そして@slhckは同意するので、私は正しくなければなりません:-)