動画圧縮について

Premireなどのソフトで出力した動画の圧縮やプログラムからはき出した連番画像ファイルからの動画生成方法.

編集ソフトから動画を出力 or プログラムから連番画像を出力

出力形式は画質を優先し,動画が短いなら,

無圧縮AVI

動画が長いようなら

Cinepak Codec
MPEG2

などを用います.最近はHDD容量も大きいので ここはなるべく高画質に出力しておいたほうがよい (できれば可逆圧縮).

自分のプログラムから画像を出力する方法は色々あるが,OpenGLの場合は, OpenGL#m6735e6cを参照.また,連番の付け方にも注意が必要である. 最近のOSだと,file1, file2, ... , file10 のように付けても順番通りに表示してくれるが, ソフトによっては,file01, file02, ... , file10 のように"0"付きで連番を付けないと間違った順番で読まれることがある. 例えば,file1, file10, file2, ... となる. ここでは,"0"付きで連番ファイル名を生成する関数の例を示す.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
/*!
 * ファイル名生成
 * @param head : 基本ファイル名
 * @param ext  : 拡張子
 * @param n    : 連番
 * @param d    : 連番桁数
 * @return 生成したファイル名
 */
inline string CreateFileName(const string &head, const string &ext, int n, const int &d)
{
    string file_name = head;
    int dn = d-1;
    if(n > 0){
        dn = (int)(log10((double)n))+1;
    }
    else if(n == 0){
        dn = 1;
    }
    else{
        n = 0;
        dn = 1;
    }
 
    for(int i = 0; i < d-dn; ++i){
        file_name += "0";
    }
 
    file_name += boost::lexical_cast<std::string>(n);
    if(!ext.empty() && ext[0] != '.') file_name += ".";
    file_name += ext;
 
    return file_name;
}

エンコードソフトに動画を入力

動画圧縮には,VirtualDub,AviUtil,TMPGEncなどの フリーソフトを用いる. 個人的にはカット編集などの容易さから, VirtualDubを用いている.

1でMPEG2で出力した場合,以下も必要かもしれない..

VirtualDubを開いたら出力動画をD&Dする.もしくは,連番画像の最初の1枚をD&Dすれば残りの画像は自動的に読み込まれる. きちんと読み込めたかどうかをウィンドウ下部にあるスライダーを動かして確かめる(下図の赤枠). 読み込めない場合は必要なコーデックなどが入っていない可能性があるので, 別の形式に出力するか,コーデックを調べてインストールする.

virtualdub.jpg

エンコード設定

エンコード設定は,メニューの Video と Audioから主に行う.

  • Video -> Full processing mode にチェックが入っていることを確認
  • Video -> Compression で動画圧縮方法を選択.必要に応じてConfigureで細かく設定
    • ここでは圧縮方法としてはDivXを例としてあげる.他のコーデックについてもだいたいの設定は同じ.
    • 設定 : レートコントロールのところを,
      • 1パス-品質依存でターゲットクオンタイザーを3程度に設定,小さい数字ほど高画質・高容量になるので,画質と容量はこれで調整.
    • Windows上のPowerPointなどに貼り付ける場合はWMV(Windows Media Video)にしておくと安心.
  • 連番画像を元にした場合はフレームレートも設定しておく.Video -> Frame Rate で Source rate adjustment のChange frame rate to (fps) : にチェックを入れて,30や24などを設定(下図の赤枠).
virtualdub_fps.jpg

Audioも同様に設定するが,必要ない場合は Audio -> No audio にチェックを入れる.

エンコード

File -> Save as avi をクリックし,ファイル出力場所を指定する. あとは少し待てば完成.

VirtualDubはデフォルトでは終了時にエンコード設定が保存されないので,毎回上記設定を行う必要がある. これが面倒な場合は, File -> Save processing settings で*.vcfファイルに現在の設定を保存して, File -> Load processing settings で読み込ませることで再設定する必要がなくなる. デフォルトの設定を変えたい場合は,

  • 設定をvcfとして保存(default.vcfとしてVirtualDub.exeと同じフォルダに置くとする)
  • オプション付きで,
    VirtualDub.exe /s default.vcf
    と起動するようにショートカットなどを設定する.

他のソフトとしては,Avidemux, AviUtl, HandBreakなどもお勧め. MOV形式にしたいときはこちらを用いている.

動画編集

コーデック

動画の再生だけでなく圧縮についてもコーデックを必要とする. 上記のVirtualDubなどで圧縮するときには以下で説明するコーデックをインストールしておくことをおすすめする. コーデックをインストールすると,動画圧縮方法を選択するところで,

virtualdub_codec.jpg

のようにインストールしたコーデックがリストに追加される.

WMV9(Windows Media Video 9)

Microsoftが独自に開発したコーデック.Windowsとの親和性は高く,新しめのWindow Media Playerならコーデックのインストールなしで再生できる. 古いMedia Playerや上記のVirtualDubなどからこのコーデックを使用するには以下をインストールする.

インストールファイル(wmv9VCMsetup.exe)をダウンロード,実行して後は指示に従ってインストールするだけ.

DivX

MPEG4をベースに開発されたコーデック.研究のビデオでも比較的用いられている(最近はh264の方が多い). 有料のDivX Proもあるが,単に圧縮,再生するだけのコーデックは無料で使える.

  • DivX ページ右上の「無料ダウンロード」からDivXInstaller.exeをダウンロード,実行する.

XviD

元々オープンに開発されてきたDivXの商用化に反発して作成されたオープンソースのコーデック. 名前はDivXの反対になっている.

オープンソースプロジェクトなので,上記サイトではソースコードのみ提供されている. 自分でビルドするのでもよいが,WindowsもしくはMac用のバイナリが,

で公開されている.XviD-*-*.exeをダウンロードしてインストールする.

x264

H.264へ圧縮するためのオープンソースプログラム.H.264はYouTubeやニコニコ動画などの高画質動画用に用いられているもので, これまでのものに比べて同サイズで圧倒的に高品質の動画を作成できる.ただ,現時点ではエンコードに時間がかかるのが欠点. また,より高画質にするためには多くのパラメータを設定する必要がある.面倒な場合はHigh Profileをとりあえず用いれば高画質なものが得られる.

XviDと同様にオープンソースなので,上記サイトからはGITリポジトリからソースコード(tar)がダウンロードできる. いくつかの動画エンコードソフトが対応している(上記サイト参照)のでそれらを用いるか, Windowsならば,VFW(Video For Windows)に対応したコーデックソフトが,

からダウンロードできるので,最新版をダウンロード・インストールする.

Huffyuv

可逆圧縮コーデック.上記の非可逆圧縮コーデックより圧縮率は劣るが,編集中の動画や別の動画に組み込む予定の動画など, 画質が劣化して欲しくない動画を保存するのに用いる.

ダウンロードして,解凍,*.infファイルを右クリックして,インストール.

  • 64bit Windowsだとinfファイルの中身を編集する必要がある -> 参考:VistaやWin7 x64でHuffyuvを使うための修正箇所
    30行目
    HUF.Files.Dll=10,SysWOW64
    
    47,48行目
    HKLM,"Software\Wow6432Node\Microsoft\WindowsNT\CurrentVersion\ drivers.desc",huffyuv.dll,,"Huffyuv lossless codec[HFYU]"
    HKLM,"SOFTWARE\Wow6432Node\Microsoft\WindowsNT\CurrentVersion\ Drivers32",VIDC.HFYU,,"huffyuv.dll"
    
    52行目
    HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\HUFFYUV,UninstallString,,"rundll32.exe setupapi.dll,InstallHinfSection DefaultUninstall 132 %17%\HUFFYUV.INF"
  • 右クリックメニューにインストールが出ない場合,コマンドラインからもインストールできる
    rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 ./huffyuv.inf

MOV(QuickTimeビデオ形式)

Apple社が開発したQuickTimeビデオ形式.QuickTimeプレイヤーを使えば,MacでもWindowsでも再生できる. 見る人の環境に依存しないので,研究のビデオを作成する際にも安心してつかえる.


添付ファイル: filevirtualdub_fps.jpg 1757件 [詳細] filevirtualdub_codec.jpg 1506件 [詳細] filevirtualdub.jpg 1435件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-04-02 (月) 16:04:52 (3014d)