人々がコメントで言ったように、あなたが実際に解決しようとしている問題に対処する正しい方法は、字幕を微調整するか、プレーヤーに異なる速度のビデオを求めていることを伝えることです。(例:mpv --sub-fps 25
25fpsショーのサブを24 / 1.001 fpsコピーと同期させます。)(http://mpv.io/)
しかし、実際の質問に答えるには:
fpsを変更するために再エンコードする必要はありません。残念ながら、ffmpeg は再エンコードせずに新しいタイムスタンプでリマックスできませんが、それはffmpegの設計上の制限です。ビデオのエンコードは損失が多く非常に遅いため、行わないでください。
mkvmerge --default-duration 0:24000/1001fps --fix-bitstream-timing-information 0 in.mkv -o out.mkv
ビデオFPSを変更してみてください。それはオーディオのタイミングに影響を与えないので、A / V非同期化を取得します。 入力ファイルの0:
トラック0
を選択します。これは通常、ビデオだと思います。
ピッチを保持する高速化フィルターで処理した後、オーディオを再エンコードする必要があります。私は通常、mpv / mplayerのscaletempo
フィルターで再生時にのみこれを行います(mpvは自動的に挿入します)。ffmpegには、atempo
おそらくトリックを行うフィルターがあります。
スローダウンしたオーディオを24 / 1.001fpsビデオと多重化すると、作業ファイルが再び必要になります。
通常、これを行う必要はないので、私はこれをすべてテストしませんでした。潜水艦の速度をプレイヤーに伝えるだけです。またmpv --speed 25025/24000 -subfps 25 myfile.mkv
、元々25fpsだったイギリスのショーの24 / 1.001 fpsコピーがあり、一定の速度で元の速度で再生したい場合、25fpsでビデオをオンザフライで再生することもできます。 -ピッチのオーディオ高速化。