VFR→CFR 変換ツール
画面録画やスマホの動画の「可変フレームレート(VFR)」を、一定のフレームレート(CFR)に変換します。まずファイルの情報からフレームレートを読み取り、必要なら先頭 30 秒のフレーム間隔も調べられます。
fps フィルタでフレームを複製・間引きして H.264、音声は AAC 160kbps へ再エンコードします。元からある音ズレや欠落フレームを修復する機能ではありません。自動のfpsは候補値です。録画・編集・納品の設定に合わせて選び、変換後の冒頭・中間・末尾を確認してください。
対応する FFmpeg コマンド
現在の設定に対応するコマンドラインです。設定を変えるとリアルタイムで更新されます。
ffmpeg -y -i input-1.mp4 -map 0:v:0 -map "0:a:0?" -vf "fps=30,scale=trunc(iw/2)*2:trunc(ih/2)*2" -c:v libx264 -preset veryfast -crf 22 -pix_fmt yuv420p -c:a aac -b:a 160k -movflags +faststart output-2.mp4 次にやること
使い方
- 動画をドロップMP4・MOV・WebM・MKV など、500MB・15 分までの動画を選びます。読み取った平均 fps と基準レート(tbr)が表示されますが、この 2 つだけでは、フレーム間隔が一定かどうかは分かりません。
- 必要ならフレーム間隔を確認「先頭30秒のフレーム間隔を調べる」を押すと、先頭最大 30 秒をデコードして、間隔がそろっていないフレームの割合を数えます。それより後ろの部分や、音ズレの原因までは分かりません。
- 出力レートを選ぶ録画の設定や、編集ソフトのプロジェクト設定に合わせて選びます。「自動」は、ファイルの情報から選んだ候補です。
- 変換してダウンロード映像は H.264、音声は AAC 160 kbps に再エンコードします。完了すると出力の fps / tbr が表示され、ファイル名には「_cfr30」のようにレートが付きます。
おすすめ設定
うまくいかないとき
「VFR の疑い」と出るが、デコードすると「解析範囲はほぼ一定」
原因:ヘッダの値は推定値で、フレーム間隔の検査は先頭 30 秒だけを見ています。調べている対象が違います。
対処:先頭の結果だけで、全体の状態や音ズレの原因は決められません。ズレが最初から最後まで同じ量なら、音ズレ補正ツールで音声をずらせます。
変換したら動画が速くなった / 短くなった(CLI で自作した場合)
原因:入力の前に -r を付けると、元の時刻を無視して、指定したレートで時刻を付け直します。
対処:元の時刻を保ったまま一定間隔にするには、入力の後ろに -vf fps=30 を付けます。出力の長さも確かめます。
出力が元より大きくなった
原因:容量は、フレームの数・CRF・映像の中身で決まります。元より高い画質の設定で再エンコードすると、大きくなることがあります。
対処:出力を見ながら CRF を上げるか、動画圧縮ツールで容量を指定して圧縮します。
先頭30秒はCFRなのに後半で音がズレる
原因:先頭だけの検査では、後ろの部分の時刻情報や録音の問題は分かりません。
対処:ズレる区間を比べ、元の動画でもズレているかを先に確かめます。VFR だけが原因とは限りません。
動画の長さが15分の上限を超えている
原因:このツールで扱えるのは 15 分までです。短い動画でも、端末のメモリが足りないと失敗することがあります。
対処:元の動画を残し、パソコン版の FFmpeg で下のコマンドを実行します。
よくある質問
VFR(可変フレームレート)とは何ですか?
フレームの表示間隔が一定でない動画です。時刻情報が正しく、プレーヤーが対応していれば、VFR のままでも問題なく再生できます。編集ソフトが CFR を必要とするときや、実際に不具合があるときに変換します。
この変換で音ズレは本当に直りますか?
直るとは限りません。fps フィルタは元の時刻に合わせて映像のフレームを複製・間引きしますが、音と映像の中身を合わせ直すわけではありません(音声は AAC に再エンコードします)。ズレが一定の量なのか、時間とともに大きくなるのかで、直し方が変わります。
再生速度や長さは変わりますか?
変わりません。fps フィルタは元の時刻を保ったまま、フレームの数だけを増減します。ただし最後のフレームの扱いで、映像と音声の終わりがわずかにずれることがあります。冒頭・中間・末尾を元の動画と比べてください。
「自動」はどのレートを選びますか?
基準レート(tbr)が標準的な値に近ければそれを、そうでなければ平均 fps に近い標準値を選びます。tbr は推定値なので、録画の設定や編集ソフトの設定が分かっているなら、そちらに合わせます。
再エンコードせずに直せませんか?
できません。CFR にするにはフレームを増やしたり減らしたりする必要があり、`-c:v copy` では元の時刻がそのまま残ります。音声は、パソコン版の FFmpeg なら `-c:a copy` でそのままコピーできます。本ツールは、WebM(Opus)や MKV(FLAC)からでも再生しやすい MP4 にするため、音声を AAC 160 kbps に変換します。
29.97 と 30 のどちらを選ぶべきですか?
元の規格と、編集ソフトの設定に合わせます。fps フィルタは元の時刻に合わせてフレームを増減するので、どちらを選んでも動画の長さは変わりません。29.97 fps は 30000/1001 として指定します。
iPhoneのHEVC動画は使えますか?
HEVC の動画も読み込んで H.264 に変換できますが、プロファイルや端末のメモリによっては失敗します。まず短いコピーで試し、HDR の色や向きも確かめてください。
フレーム間隔のばらつきはどう数えていますか?
先頭最大 30 秒の表示時刻(pts_time)から、隣り合うフレームの間隔を 0.1ms 単位で数えます。いちばん多い間隔から 5%(最低 1.5ms)を超えて離れた間隔を「不揃い」とし、その割合が 2% を超えると「解析範囲で間隔にばらつき」と表示します。時刻の丸めによる小さな揺れを許容するための目安で、全体の分類や、録画時の意図を示すものではありません。
くわしい説明(設定の意味・制限・FFmpeg のコマンド)
設定の意味
使えるブラウザと制限
- ファイルは 500MB・15 分まで。超える場合は、上のコマンドをパソコン版の FFmpeg で実行します
- フレーム間隔を調べるのは先頭最大 30 秒だけです。後ろの部分の時刻や音ズレは、別に確かめる必要があります
- 出力は常に MP4(H.264 + AAC)です。ProRes や無劣化の出力は、パソコン版の FFmpeg で行います
- 字幕は残りません。音声トラックが複数あるときは、最初の 1 本だけが残ります
同じ処理を FFmpeg のコマンドで
ffmpeg -i input.mp4 -map 0:v:0 -map 0:a:0? -vf fps=30 -c:v libx264 -preset veryfast -crf 22 -pix_fmt yuv420p -c:a aac -b:a 160k -movflags +faststart output.mp4 ffmpeg -i input.mp4 -fps_mode cfr -r 30 -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a copy output.mp4 ffmpeg -i input.mp4 -vf fps=30000/1001 -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a copy output.mp4 ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate,avg_frame_rate -of default=nw=1 input.mp4 ffprobe -v error -select_streams v:0 -read_intervals %+30 -show_entries frame=pts_time -of csv=p=0 input.mp4 「平均 ≠ 基準」は手掛かりで、証拠ではない
ファイル情報の fps と tbr は手掛かりにすぎません。差があっても、それだけで VFR や時刻の異常とは決められません。同じ値でも、間隔が一定とは限りません。FFmpeg のストリームの定義でも、基準レート(r_frame_rate)は推測値とされています。
先頭 30 秒のフレーム時刻を調べると、その範囲の間隔のばらつきが分かります。結果はこのツールの許容誤差による判定で、動画全体が CFR であることの保証ではありません。
fps フィルタと入力側の -r を混同しない
fps フィルタは、元の時刻を基準にフレームを複製・間引きします。出力側の -fps_mode cfr と -r でも一定のレートにできますが、丸め方や最後のフレームの扱いまで同じ結果になるとは限りません。
入力の前に付けた -r は、元の時刻を無視して時刻を付け直します。元のフレーム間隔が不規則だと、動画の長さが変わることがあります。画像の連番を読み込むときのレート指定とは使い方が違います。FFmpeg 公式の -r と -fps_mode の説明
出力レートは録画設定と編集先から決める
平均が 12fps と分かっても、撮影時に 30fps を狙っていたかどうかは分かりません。動きの多い部分を確かめ、低すぎるレートで必要なフレームを間引かないようにします。高いレートにしてフレームを複製しても、動きがなめらかになるわけではありません。
「自動」は基準レート(tbr)を手掛かりにしますが、撮影時の設定を示すものではありません。編集ソフトの設定も確かめてください。29.97 は 30000/1001、59.94 は 60000/1001 で指定します。fps で一定間隔にそろえる処理と、再生を速める倍速の処理は別のものです。