ffmpeg で重複フレームを間引く方法

AviSynth 編集してエンコードするときにフレームを間引く人は多いと思うが、AviSynth の導入部分で躓く人が多いと思うので手軽に ffmpeg でフレームを間引く方法。ただし固定周期限定なので周期が途中で変わると間引きがうまくいかず再生がガタガタする。

追記 2015年7月15日
現在は decimate フィルタを使うだけで自動で重複フレームを間引いて 4/5 にフレームにするのでこちらのほうが圧倒的におすすめ。

ffmpeg -i in.mp4 -vf yadif=0:-1:1,decimate -acodec copy out.mp4

追記ここまで

Zeranoe FFmpeg - Builds

関連記事
エンコ入門 - 第2回 プルダウン | エンコなう
ffmpeg でインターレース解除

本来は 24000/1001fps なのに、動画は 30000/1001fps になっていることが多い日本の公式配信のアニメは、再生するときに重複フレームが有るためにカクカクした感じがどうしてもしてしまう。これを解消するにはそのフレームを間引く必要がある。

動画をフレーム単位で調べるには Windoiws PC ならば、AviUtl を使ってどのフレームが重複しているかを調べることができる。30000/1001fps が 24000/1001fps になるということは、フレーム数を 4/5 にすることになる。そして動画によって重複するフレームの開始フレームが異なるが、そこから5フレーム毎に重複フレームが現れる。

ということなので開始5フレーム目が重複する場合は、1,2,3,4,0,5,6,7,8,0,9 という風にフレームを間引き、pts を調整するようにエンコードする。音声はエンコードする必要がないのでそのままコピーする。動画を可逆圧縮する場合は映像エンコーダに Utvideo を使う。n の計算式の後ろにはバックスラッシュを入れてエスケープする。

FFmpeg documentation : : Notes on filtergraph escaping

ffmpeg -i in.mp4 -vf select=(mod(n\,5)),setpts=N/(24000/1001*TB),fps=24000/1001 -acodec copy out.mp4

ffmpeg -i in.mp4 -vf select=(mod(n\,5)),setpts=N/(24000/1001*TB),fps=24000/1001 -vcodec utvideo -acodec copy out.mkv


動画の重複フレームの開始フレームが5の倍数であるとは必ずしもそうでない場合もある。某アニメの場合、2, 3, 7, 8, 12, 13, 17, 18... のフレームが重複している。このフレームを間引くには n-2 として、間引く開始フレームを2遅らせる。

ffmpeg -i in.mp4 -vf select=(mod(n-2\,5)),setpts=N/(24000/1001*TB),fps=24000/1001 -acodec copy out.mp4

1, 2, 6. 7... が重複する場合は
ffmpeg -i in.mp4 -vf select=(mod(n-1\,5)),setpts=N/(24000/1001*TB),fps=24000/1001 -acodec copy out.mp4

追記 2013/05/08
重複フレームの確認に各フレームを画像で出力して差分を調べることもできる。出力フレームは映像が動いているシーンが最適だが途中からカットする場合は最初のフレームから数えて何番目のどの周期かを確認する。出力する画像の枚数は最初が動いているのならフレームレートの半分程度で良い。

このコマンドは1フレーム目から10フレーム目までを png の連番で出力する。
ffmpeg -i input -vf select=gte(n\,1)*lte(n\,10) -an -vsync 0 img%02d.png

偶数フレームを出力する:select=(mod(n-1\,2)) // 出力フレームは 0, 2, 4...
奇数フレームを出力する:select=(mod(n\,2)) // 出力フレームは 1, 3, 5...

mod などの特殊な計算式は ffmpeg で使える計算書式 を参照。
select フィルタの使い方は
【ffmpeg】動画から特定フレームを画像で出力する方法FFmpeg documentation を参照。
関連記事

この記事へのコメント

管理人のみ通知 :

トラックバック


ニコニコチャンネル始めました
ニコラボチャンネル
スポンサード リンク
THE IDOLM@STER THE@TER ACTIVITIES 03
THE IDOLM@STER THE@TER ACTIVITIES 03

Fate/EXTELLA REGALIA BOX for PlayStation (R) 4 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4
Fate/EXTELLA REGALIA BOX for PlayStation (R) 4 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4

妖怪ウォッチ くったりぬいぐるみだニャン ジバニャン
妖怪ウォッチ くったりぬいぐるみだニャン ジバニャン

Fate/EXTELLA VELBER BOX 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4
Fate/EXTELLA VELBER BOX 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4

Fate/EXTELLA REGALIA BOX for PlayStation (R) Vita 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS Vita
Fate/EXTELLA REGALIA BOX for PlayStation (R) Vita 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS Vita

【早期購入特典あり】初音ミクシンフォニー~Miku Symphony 2016~オーケストラ ライブ CD(初音ミクシンフォニー描き下ろしクリアファイル付き(ランダム配布))
【早期購入特典あり】初音ミクシンフォニー~Miku Symphony 2016~オーケストラ ライブ CD(初音ミクシンフォニー描き下ろしクリアファイル付き(ランダム配布))

「うたわれるもの 偽りの仮面&二人の白皇」歌集(初回限定盤)
「うたわれるもの 偽りの仮面&二人の白皇」歌集(初回限定盤)

TVアニメ『ラブライブ!サンシャイン!!』挿入歌シングル「想いよひとつになれ/MIRAI TICKET」
TVアニメ『ラブライブ!サンシャイン!!』挿入歌シングル「想いよひとつになれ/MIRAI TICKET」

『刀剣乱舞-花丸-』 歌詠集 其の三 特装盤
『刀剣乱舞-花丸-』 歌詠集 其の三 特装盤

本好きの下剋上~司書になるためには手段を選んでいられません~第一部 「本がないなら作ればいい3」
本好きの下剋上~司書になるためには手段を選んでいられません~第一部 「本がないなら作ればいい3」

新着記事と追記・編集記事
スポンサード リンク
ブログ内検索
プロフィール

Author:ロベルト
お問い合わせはこちらまで
robelt2525[at]gmail.com

中の人 @nico_lab
ブログ更新用 @blo_nico_lab

詳しいプロフィールはこちら

カテゴリ
アクセスの多い記事
記事アーカイブ

最新コメント
リンク
ニコニコ静画
アニメカテゴリ毎時ランキング
免責事項
当ブログはリンクフリーです。記事によりトラブルが生じた場合でも、当ブログ管理人は一切の責任を負いません。 当ブログに記載されている情報の正誤や利用は、ご自身の判断でお願いします。 紹介したアプリケーションに関する問い合わせは作者に問い合わせてください。ニコニコ動画に関する質問はまずは公式掲示板、2ch、各Q&Aサイトを参照ください。
ブログの読者になる(RSS)
アクセス数