ここんとこ動画関連の話題が続きますな
今日は60iテロップが入っているソースのエンコード方法について
まず可変フレームレートとは何ぞやということで簡単に説明します
まず動画というのはソースによって適切なフレームレートがあります
例えばアニメや映画なんかのフィルムものなら24fps
実写のドラマなんかは30fpsです
しかし実写なら全編通して30fps固定化というとそうでないようで
例外もあります(アニメも)
その最たる例がドラマなんかでよくある上下あるいは左右に流れるテロップです
こいつはほとんどが30fpsのソースの上から60iで入ってる場合が多く
インターレース解除自動だと縞はなくなりますが動きがカクカクします
本編の人物はスムーズなのにテロップがカクカクだとあまりいい気分がしません
何でカクカクかというと
前回実写ドラマなんかはもともと30フレームのものは少ないと言いましたが
本来60フレームのものを地デジならmpeg2に変換するときに
60i→30iというようにfps変換してるのです
アニメの24→30i化と違って元のフレームの半分は間引かれてしまっているので
完全に元に戻すことはできません
しかし今のPCあるいはDVDやBDの映像分野では実は30fpsが主流で
60fpsで収録された動画って言うのはまったくといっていいほど見かけません
というか自分も見たことないんですが
つまりなんで60fpsを30fps化しても不満がないかというと
テレビで見ることを前提にしてるから
30fpsのインターレースソースをインターレース対応のモニタで見れれば
インターレース解除とかフレーム変換もまったく不要なわけで
あー話がそれましたが
つまりは30fpsのものも擬似的に60fpsに戻してやらないと不具合が出る場合がある
特にインターレース非対応のPC用モニタなんかでは特に
でどうするかと言うと
60iのテロップのはいっている部分だけ60fps化しちゃいましょうということです
いや待てテロップ部分が60iなら本編も60fps化すればいいジャンって言う
鋭い突込みがきそうですが
前にも言ったように前編を60fps化するのはファイル容量的に厳しい
その上デコードも重くなります
そりゃHDDに余裕がある人やマシンスペックが自慢の人はいいかもしれません
というか理想ですけど
実写ソースは60fps化が鉄板ですが
オイラみたいな貧乏人にはオヌヌメしかねます
ですのでどういうことをするかというと
mp4コンテナはひとつの動画に異なるフレームレートが存在してもOK
という仕様があるのです
本編は30fpsでエンコードしテロップ部分のみ60fpsでエンコードして
対応した出力プラグインで連結して出力するとちゃんと再生できます
では以下に自分の場合の具体的な手順を書きます
以下は全てAviutlで30fpsソースの場合です
下準備として映像はDGIndexで.d2v形式として出力しVFAPIで読み込み
音声はRawAACなのでFakeAACtoWavで擬似wave化して読み込ませる
Aviutlプラグインのmp4pluginを入手してプラグインフォルダに入れておきます
Aviutlの環境設定→システム設定→追加読み込みしたファイルのfpsを変換しない
にチェック(重要)
コーデックはH.264とします
1.まず本編を適当にCMカット
・・・これは主に音声をカットするためで
そのままエンコードしたら前編30fpsになるので注意
カットした音声はもちろん擬似waveなので再圧縮なしでコピー出力
再びFakeAACでもとのRawAACに戻しておきましょう
そうしたらテロップが流れる直前と流れて終わった直後を見つけます
2.ソースの先頭フレームからテロップの流れる直前のフレームまでを範囲指定し
自分で分かりやすい名前を適当につけてH.264でエンコード
3.流れて終わった直後のフレームからソースの最終フレームまでを範囲指定し
2と同じようにH.264エンコードしますが
※くれぐれもファイル名とかぶらないように!上書きされてしまいますので
4.ソースをAviutlの60fps読み込みで読み込みテロップ部分を範囲指定し
H.264でエンコード
・・・Aviutlの開くのメニューから読み込むのですが
ファイル選択画面の下に60fps読み込みというのがあるのでそれにチェックを入れます
また60fps読み込みは編集プロジェクトから読み込んだ場合は適用されないので
CMカット後に編集プロジェクトを.aupとして保存しても60fpsで再読み込み不能
なのでソースを.d2vなどから再び読み込む必要がありますメンドイ
インターレース解除などは特に必要ないのでそのままエンコード
ここで注意
※手順2~4で作成するmp4ファイルは
フレームレートとビットレート以外の条件を全て同じにする必要があります
つまりコーデックやリサイズなどでは統一しておきます
他のノイズ系や強調系のフィルタは問題ないので適宜フィルタをかけてエンコード可
ただし音声は後々問題が起こるので音声無しで出力しましょう
5.出来上がったファイルをAviutlの追加読み込みでつなぎたい順番に開き
エクスポート→mp4eportで連結して出力
・・・2~4で出来上がったmp4を順番に気をつけて追加読み込みしましょう
で読み込みが終わったらメニューのmp4exportし出来上がったmp4ファイルは
Yambなどのmp4ツールで手順1で出力したRawAACと結合すれば完成です
いやメンドイけどこれが一番確実にテロップなどの60i混在フレームを
可変フレームレート化する手順なんですが
でここでデコードに関してなんですが
オイラはH.264のデコードをフリーのDirectshowフィルタの
ffdshowに任せてるんですが
どうもオイラの環境ではffdoshowのコアフィルタであるlibavcodecで再生すると
60fps部分で音声がずれて30fps部分になると直るという謎の現象が起こるので
ffdshowにおまけでついてくるffmpeg-mtというデコーダに変えると
問題なく再生できるようになりました
どうもffdshowのlibavcodecはバグがあるみたいで
高ビットレートや高フレームレートの再生に弱いのか
60fps部分のデコード画質も悪い気がするし
まあまた何か問題が出たらソフトを変えるか
違う方法で可変フレームにするしかないですね






コメントを残す