2020年3月15日日曜日

スマホなどのVFRの動画をCFRに上手く変換する方法




スマホで撮影した動画を編集するとき大変なのがVFRの処理です。今のところ暫定ページですが、VFRからCFRの変換の仕方を記事にしました。

そもそもVFRとは

一般的にはCFR(constant frame rate)、日本語で言う固定フレームレートが使われています。これは一秒間に30コマであれば、常に30コマがキープされます。カメラやDVDにテレビ放送と、一般的にはこれが普通です。

一方VFR(variable frame rate)、日本語では可変フレームレートとなります。これは1秒間に30コマと言われれば、平均して約30コマとなり一秒間に29コマだったり30コマだったりします。これはスマートフォンでよく使われます。風景の写真であれば無駄にコマ数を増やす必要もありませんし、動きが多ければコマ数が多いほうが滑らかに見えるので、理にかなった方式です。

VFRだと編集が大変

ただ撮影するだけなら素晴らしいVFRですが、編集するとなると別です。一般的な動画編集ソフトはCFRを前提に作られているので、音ズレが発生したり動画がカクついたり最悪上手く読み込めません。

だから変換ソフトでCFRに変換してやればいいのですが、これが大変です…

お手軽はHandbrake お勧めはTVMW

お手軽なのは無料の変換ソフトのHandbrakeを使うことです。現状私が知る中でのベストはTVMWです。

動きが少なく短い動画ならHandBrake

例えばiPhoneで4K60Pの動画、つまり3840×2160の60fps vfrで撮影したとします。その場合は3840×2160の60fpsで出力するだけでCFRに変換することができます。

ただこの場合には音声と動画に問題があります。例えば私のiPhone XRで撮影すると60fpsのvfrで撮影すると、一秒間の平均では60.018fpsとかになっています。これを動画変換すると、ちょっとだけ動画の時間は伸びているのですが音声は最初のまんまとなり、最後に音声が入っていない状態になります。変換する映像は1分など短ければよいのですが、長いとズレが大きくなる場合が考えられます。

また、長くなっているので総フレーム数を単純に60で割って60fpsにしているのかと思うと違うらしく、60と60.018の誤差で数分に1コマ重複して帳尻を合わせるコマが発生し、動画がカクつく場合があります。そこで登場するのがffmpegです。

長い動画ならffmpeg

ffmpegは無料の動画デコーダー・エンコーダーです。コマンドラインを使うのが面倒ですが、細かい設定がかなりできます。なので音声のズレはこれで直ります。

変換する動画がCFR相当平均60.018fpsの60fpsのVFRだったとします。その場合は60÷60.018=‭0.9997000899730081‬で、音声を60相当に伸ばしてやります。そうすると最後の無音部分は無くなります。

例えばエンコーダーはnvencで出力時映像は192MbpsのGOP数30のH.265で、音声はPCMのモノラル48Khzとした場合のパス例はとなります。

C:\ffmpegがある場所\ffmpeg.exe -i "変換する動画ファイルのパス" -g 30 -c:v hevc_nvenc -preset 1 -r 60 -b:v 192000k -c:a pcm_s16le -ar 48000 -ac 1 -af "atempo=0.9997" "変換した後の動画のファイルのパス"

これで音声のズレは無くなります。ただ、数分間に一度起こる映像のかくつきは残ります。ただ、映像の内容によってはかくつきは分からないので、これで十分でしょう。

有料だけどベストのTVMW

TVMWはペガシス社の「TMPGEnc Video Mastering Works」の略称で、有料のソフトとなります。最新バージョンは7です。

TVMWに読み込ませると、VFRは一秒あたりの平均でCFRとして読み込まれます。変換する動画がCFR相当平均60.018fpsの60fpsのVFRだった場合、60.018fpsのCFR動画として読み込まれます。

なのでTVMWの場合は出力するのが60fpsであれば、60.018fpsを60fps相当に伸ばしてやれば良いだけです。再生スピードを変えるフィルターがあるので、60.018fpsなら99.97%の再生速度にしてやれば音声も動画もズレがなくなります。

この方法はスマホの映像を一般的なビデオカメラと編集するときにも使えます。一般的なビデオカメラやスチルカメラでの秒間60コマは59.94fpsのことを指します。なのでスマホの映像と組み合わせる場合は、どっちかに合わせてやる必要がります。そこでスマホで撮った動画がCFR相当平均60.018fpsの60fpsのVFRだった場合であれば、先ほどのフィルターで再生速度を99.87%にしれやれば解決します。ただし、60.018fps相当の例でいえば誤差の関係で15分程度に一回は重複するフレームが発生するので、長い映像だと映像がかくつく場合があります。ただ、他のやり方に比べれば影響は最も少ないはずです。

しかし、iPhoneなんかはプロみたいな動画撮れますって宣伝してるのだから、CFRに対応してくれって常々思います…不便すぎる

スポンサーリンク


0 件のコメント:

注目の投稿

X370をCPU載せ替えでWin11にして使い倒せ!

第一世代Ryzenチップセットを利用してWin11にはどういう手順でアップグレード出来るかの概要や、実測値としてはどの程度性能が上がるか紹介します。 X370はRyzen5000シリーズまで行ける! X370チップセットはRyzen第一世代の1000シリーズと共に2017年に登場...