†ぽんこつビデオ工房†
作成開始日 2021.01.31
最終更新日 2023.11.24
avi:ffmpeg -i inp.vro -c copy out.avi mkv:ffmpeg -fflags +genpts -i inp.vro -c copy out.mkvaviへの素通し変換は簡単だが推奨しない。このデータをAvidemuxに読み込ませると、1フレーム([←][→]一つ分)の長さが不定になる。通常の33msから、最長133ms(4フレーム分)くらいまで、どの程度の長さになるか予測不能。しかも、長い1フレームには複数フレームが隠れているため、切ったはずのフレームが残っていたりする。それと関係があるかどうか不明だが、そこそこ高い頻度で、音声にブツっという異音が入ったり、再生途中でクラッシュしたりする。また、Iフレーム位置でカットしても、つなぎ目でおかしな補間をするなど、けっこう厄介。
素通し変換であれば、mkvへの変換の方が実用的。-fflags +genpts(presentation time stampの生成)指定が少々面倒だが、これのおかげで音ズレしなくなる。つか、このオプションを指定しないと、そもそもmkv素通し変換は不可能だったと思う。ただ、これを指定しても、ファイル先頭が0msから始まらないとか、HDレコーダーのファイルはけっこう厄介で、細かなところに問題が残る。
【追記】現在(2023年11月)はAvidemuxのavi素通し変換をメインに使用している。ffmpegを使用したavi素通し変換では上記のような不具合が発生するが、Avidemuxでは正常に変換可能。ただし、GUI版のAvidemuxでは非効率なので、コマンドライン版を使用してる。なお、ffmpegのmkv素通し変換は、Avidemuxのフレーム編集と相性が悪いので、現時点では推奨しない。
q0:ffmpeg -i inp.vro -qscale 0 -vcodec mpeg4 -acodec copy out.avi「-qscale 0 」と言うのは、ff-mpeg4固有(と言っても良いと思う)の無劣化モード。再エンコードはするが、元画質と同等の画質を維持する。動きの激しい動画では、サイズが非常に大きく膨らむこともある。尤も、VRO(mpeg2)のアニメであれば、最大でも3割増し程度、ほとんどの場合は元ファイルよりも小さくなる。何より、時間情報が奇麗になるようで、別項で述べるフレーム単位の編集の際には必須の変換となる。
やはり問題は画質の劣化。無劣化相当とは言うものの、本当に劣化はないのか、多少疑問は残る。けっこう何度もチェックしたが(拡大静止画を比較してみた)、確かに目に見える劣化はなかった。ただし、元画質に問題がある場合、あるいは古い映画フィルムの雰囲気を出すために意図的にノイズを乗せる演出などの場合、それを補正しようとする傾向があるようで、瑕疵まで忠実に再現する訳ではないようだ。
なお、上記の例で出力コンテナがmp4ではなく、aviになっているのは、音声を無変換で格納するため。mp4コンテナにac3を入れると、再生できないプレイヤーも少なくない。また、素通し変換で述べたaviコンテナの諸問題は、無劣化変換したファイルでは発生しない。