動画の再圧縮の方法@まとめページ †
変換君で変換できない動画のほとんどは再圧縮で解決できますが、その方法について解説します。
本当に再圧縮する必要はあるのか? †
まずそのファイルは本当に再圧縮を必要としているのでしょうか?
実はFFdshowとAviSynthと変換君だけで変換できたりします。
- まずここからAviSynth2.5以上をインストールします
- FFdshowをインストールします。2000/XPの方はこちらのffdshow_rev731_20061230_clsid.exeを。98/MEの方はこちらのFFdshowをインストールしてください。
(公式には全OSで使用可と書かれていますが動作しない報告が上がっています)
- 次に3GP_CONVERTER.iniを開きます。下記のような項目があるので
[Avisynth]
Ext0=WMV:\cores\AVS_Skelton.avs
Ext1=WMA:\cores\AVS_Skelton.avs
Ext2=ASF:\cores\AVS_Skelton.avs
ここに読み込ませるファイルを追加していきます。例としてこんな感じです。
Ext3=AVI:\cores\AVS_Skelton.avs
Ext4=FLV:\cores\AVS_Skelton.avs
最新のFFmpegを使う方法 †
ウェブサイト「お気に入りの動画を携帯で見よう」様などの最新のFFmpegを使い、変換君を使ってなるべく劣化のないように動画を再エンコードする。
オプション例
[Item0]
Title=PC用 アスペクト比4:3
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -f avi -vcodec huffyuv -aspect 4:3 -acodec pcm_s16le "<%OutputFile%>.avi""
[Item1]
Title=PC用 アスペクト比16:9
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -f avi -vcodec huffyuv -aspect 16:9 -acodec pcm_s16le "<%OutputFile%>.avi""
このオプションは、通常の変換オプションの頭に組み込んで使うと便利です。
再圧縮:初級編 †
相互変換できるソフトを手に入れてそれを使う。
ここ から、使いやすそうな奴をダウンロードして変換する。
そして、できたファイルを変換君で変換するだけでOKです。
再圧縮:中級編 †
上記の方法ではエラーが出たり、映像がおかしくなった場合
ちなみに、変換にはかなりの時間がかかります。1分の動画はCPUや設定などに寄りますが、大体2分〜5分程度です。
下準備 †
- まずは、AviUtl を入手してください。(PluginSDKも)
- 適当なフォルダに解凍して、AviUtl.exeと同じディレクトリにPlugins というフォルダを作る。
- ここ から、入力系のプラグインを入手する。
それぞれの状況に寄るが、mpeg が読み込めないなら、MPEG-2 VIDEO File Reader をダウンロードする。
wmv が読み込めないなら、DirectShow File Reader をダウンロードする。
- それらのプラグインを(SDKも含む)2番で作ったフォルダに「解凍」してから、入れます。(フォルダのまま決して入れないでください。認識しません。)
- FFDshow をインストールする。
- DivX(無料版でOK)をインストールしてください。
動画を変換する †
- AviUtl.exe を開いてください。
- そこに、変換したい動画を D&D する。
- ファイル→AVI出力でビデオ圧縮をクリック
- DivX を選択したら設定を押す。
- メイン@認定プロファイルを一番したにあるものにする、1-パス 品質依存で、クォンタイザーを2にする。
コーデック@エンコーディングモードはバランスのとれた品質にしたらOKを押す。
- オーディオ圧縮をクリック
- 形式で MPEG-Layer3 を選択したら、属性を、クリックして一番上のものを選択する。
- ファイル名に保存したい名前を入力したら、保存を押す。
処理が終了するまで待ち、出来上がったファイルを変換君で変換してください。
もっと、色々と知りたいならここを見れば上記で書かれている不明な点も解決すると思います。
再圧縮:番外編 †
上記では映像部分をDivX、音声部分をMP3にしていますが、これらのコーデックはいずれも非可逆圧縮なので画質・音質ともに劣化します。
画質・音質を劣化させたくなければ、HDDの容量が大量に必要になりますが映像部分は huffyuv や Lagarith 等の可逆圧縮コーデックで、
音声部分は PCM WAVE で書き出してください (ただし、可逆で書き出したファイルはffmpegで直接読めないかも知れませんが) 。
可逆圧縮コーデックについては検索等で自分で探して導入してください。
(おまけ)
時折中間ファイルに無圧縮AVI (24BitRGB) を薦める記述が解説サイト等で見受けられますが、
無圧縮RGBのAVIで出力してffmpegに渡す方法は
- 通常我々が入手できる映像ソースはダウンサンプルされたYUV形式のものがほとんどであり
(→例. MPEG1、MPEG2(PS・TS)、MPEG4系コーデック(DivX、Xvid、WMV) はYUV420、DVはYUV411 など)
- YUV->RGB変換をする場合、色差アップサンプリング(補間)をどうするか、YUV->RGB 色変換行列をどうするか、
YC伸張をするかしないかなど、適切に色空間の変換を行わないと結果が意図しないものになる可能性があり
- かつ、元のYUVデータと比較して中間ファイルのサイズが膨らみ
- このようにして用意した無圧縮RGBの中間ファイルをffmpegに渡しても、結局最終的には
YUV形式(YUV420等)に再変換 & ダウンサンプルされてエンコーダに渡されることになる
などの理由からほとんどメリットがありません。加えて、
- 大量のデータをHDDから読むことになるため読み込みスピードがネックになる可能性がある
- エンコード時に再度のRGB->YUV変換が必要になる
といった理由から、エンコード速度も一般には遅くなることが多いです。
映像をなるべく劣化させないように取り扱いたい場合でも、無圧縮RGBは避けて、
なるべくYUY2やYV12で圧縮・展開が可能な可逆圧縮コーデックを使ったほうが効率はよいです。
コメント欄 †