- ベストアンサー
VFRのmp4をCFRに変換する方法
- Android端末で記録されたVFR形式のムービーを編集する際に映像と音がずれてしまう問題が発生しています。
- VFRのタイムコードを記録したり、CFR方式で動画を受け取る方法があるものの、正しく読み込むことができませんでした。
- VFRのmp4をCFR形式に変換することで、画質を損ねることなく映像と音の同期を図りたいと思っています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
質問にあるURL先のページの方法でできなければ、手動で調節するしかありません。 そしてそれは無理です。 一例を挙げればvfrとは1秒間に24フレームあるところと、1秒間に30フレームあるところが混ざっているもののことです。 (Variable Frame Rate:可変フレームレート) これは単純な例で、とある1秒の間にもフレームレートが変化しているものもあります。 もしこれを手動でCFRに変換するとなると、以下のような作業になります。 1)DtsEditなどでmp4ファイルからタイムコードを取り出す 2)そのタイムコードを参照しながらAviUtlなどの動画編集ソフトで「1フレームずつ」調整する 3)エンコードする 2)の作業を具体的に書くと、例えば2秒で54枚のフレームがあったとします(もし30fpsなら60フレームなければいけません)。 その内最初の1秒は23.976fps、後の1秒は29.976fpsで2秒とします。 この時のタイムコードの内容は以下の通りです。 0.000000 41.708333 83.416667 ・ ・ ・ 917.583333 959.291667 1001.000000 1034.366667 1067.733333 1101.100000 ・ ・ ・ 1935.266667 1968.633333 2002.000000 縦の点3つは省略の意です。 実際は55行あります。 作業としてはこれを30fpsで揃えるとして、このコードをみて前後の数字から計算して29.976fpsにならない部分を探し出し(上の例では最初の1秒(25行目の"1001.000000")分)、それを元に動画編集ソフトで、29.976fpsになるように調整します。 本来1秒間に30フレームなければいけないところが、24フレームしかないので、4フレーム毎にその前後どちらかのフレームをコピーします。 これをひたすら動画の尺分行うのです。 もうお分かりでしょうが、1フレームずつ調整するのは現実的な方法ではありません。 数秒の動画ならまだしも、1分の動画でも1時間では終わらないでしょう。 1週間かかるかもしれません。
お礼
結局すべがなさそうなので、MediaPlayerで再生したものをキャプチャーすることで治そうかと思います。 VFR扱い辛い… ご回答ありがとうございました。