EXTM3U形式(拡張子 .m3u8)を利用して動画変換をしていた時に、エンコードした動画の音声がズレてしまう現象があったので対処法を備忘録的に投稿しておきます。
動画音声のズレ
エンコードあるあるですが、動画を作成しているとフレームレートなどの差異で映像と音声がズレて再生されてしまうことがあります。
例えば、Premiere Proで表示してみるとこんな感じ。
これは分かりやすい方ですが、映像よりも音声が先に終わってしまっています。

HandBrakeなど、専用ソフトで音ズレの修整もできるので、使うことが出来れば、FFmpegを使用するより簡単に対策ができます。
詳しい内容は別記事をご覧ください。
-vsync オプションで固定フレームレートにしてみる
色々オプションがあるFFmpegですが、[-r] と[-vsync]オプションで解決できました。
例えば、こんな感じ。
.\/bin/ffmpeg -protocol_whitelist file,http,https,tcp,tls -i 'sample.m3u8' -r 30 -vsync cfr 'sample.mp4'
各オプションの入力値は適宜、変更してください。
エンコードしたファイルのプロパティを確認すると、確かに固定フレームになっています。
Premiere Proで、音声部分を確認してみると映像と一致してくれました。
まとめ
今回はEXTM3U形式(拡張子 .m3u8)を利用して動画変換をしていた時に音声がズレて再生されてしまう対策のため固定フレームレートでエンコードする方法について書きました。
[-r] と[-vsync]オプションを使うことで、固定フレームレートでエンコードすることが可能でした。
[FFmpeg]でエンコードしたファイルの音声がズレて再生されてしまう人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。