
Topaz Video AIで可変フレームレートになるときの対処(ウソ)
無邪気にTopazで変換をかけていてふとメディアの情報を見るととある動画が固定フレームレートではなく可変フレームレートで変換されているではないですか

why?
なぜそれに気づいたかというと元々は変換するとリサイズしながら変換するのでどうしても動画サイズが大きくなりがち。
600MBぐらいの動画が10GBになることもしばしば。
ディスクなんて増やせばいい派なのでいいといえばいいけど、さすがに動画1本が10GBは大きすぎるのでは???動画の詳細見るとビットレート11Mb/sとかになっているし・・・明らかにオーバースペック
480pの動画を720pに上げるぐらいなので目視で見ても2、3Mあれば十分足りそうな感じだし、最大でも5、6Mb/sぐらいかなと思い始めて、Topaz Video AIのCodec settingを見直し始めたんです。
そんなテスト中に見つけてしまった可変フレームレート動画
元々は何も触っていないのでQuality LevelはHighでやっていました。

ここをMediumに下げて出力していたときに出たので原因はQuality Levelだろうと思ったのでMediumからHighに戻しましたが事象変わらず。
Highにしても可変フレームレートで出力されます。
少し時間を戻すと・・・
このTopaz Video AIってトリミングも出来ることになっているんですがうちの環境でトリミングすると正しくトリミングされません。。。
動画の中身的には出来ているようなんですがヘッダ情報?メタ情報?にあるdurationはトリミングする前の時間のまま。
ファイルサイズは小さくなってるけど再生すると動画の尺はフル尺に見える。でもカットしているところで止まる。
こんな問題を実は以前から抱えていました。
Topazのコミュニティで同じ事象を上げている方がいるけど開発の方では起こらない事象らしい。おま環レアケースなのか?!
・・・と何の話?と思われるでしょうが、こんなことがあるので正直Topazの挙動はあまり信用していないというか基本疑っている。
こんな状況ゆえ、今回の事象も最近V5にアップデートしたのでバグなんだろうなと内心思っていました。
てか、200ドル近い動画ソフトなんだし、画質にこだわるソフトなんだからこのあたりの設定をユーザにやらせるようにしてくれないか・・・
内部はffmpegを使っているようだし、advanced settingみたいな項目で出来るようにしてほしい!
原因
Topaz Video AIではなく動画素材に依存するようです(多分)
今回の素材はかなり昔にhandbrakeでエンコードした素材なんですがDVD Menuやチャプター情報も記録している素材でした。
どうもこれがダメだったようでこれらの情報を削除することでTopazにかけてもVFRではなく固定フレームレート(元動画のまま)で変換できるようになりました。
今回の素材のMediainfo




対処方法
(1)ffmpegで対象の情報を消す
ffmpeg -i test.mp4 -map 0 -map -0:s -map_chapters -1 -c copy test-out.mp4
まずこれでmenuやchapterの情報が消えます。
(動画はリエンコードせず、スルー出力されるのでご安心を)
これだけでいいのかな?と再び情報を見ると合っても無くてもよさそうな情報が残ってしまうので念のため削除

ffmpeg -i test-out.mp4 -map_metadata -1 -c copy test-out2.mp4
meta情報を削除するだけで先と同じリエンコードはしません。
これをやるとキレイになります。

少し手間がかかりますがこの2つの処理をしたあとTopazを通したらちゃんと固定フレームレートで出力してくれました!
おまけ
ffmpeg -i test.mp4 -map 0 -map -0:s -map_chapters -1 -map_metadata -1 -c copy test-out.mp4
先のコマンドを1つにしてmeta情報も削除する形でやってみたらどうも追加した-map_metadata -1 が効かないようでmeta情報が残った状態で出力されてしまいました。。。
ちょっとした手間ですが2段処理してください。