2015年7月26日日曜日

FFmpeg H265(HEVC) Nvidia GPUエンコード

Nvidiaの新しいグラボGTX960を買ったので、GPUエンコード(NVENC)を試してみた。

1.FFmpegをビルド
NVEncを使用できるFFmpegの配布は制限されているようなので、自分でビルドしなくてはいけない。

ffmpeg-windows-build-helpersを使うと簡単にビルドできる。そこで、まずUbuntuをvirutalbox上にセットアップ

スクリプトを実行していくつかの質問に答えると、必要なファイルをダウンロードしてコンパイルし、ffmpeg.exeファイルが出来上がる。

2.H265(HEVC) でエンコード

D:\> ffmpeg.exe -i test_movie.ts -vcodec nvenc_hevc -b:v 3M -vf yadif=1:-1:0,scale=1280:-1 test_movie.mp4

-b:v 3M
 ビデオ・ビットレートを3Mbpsに指定。
 HD映像だとビデオ・ビットレートは3Mbpsくらいが下限な感じ。

-vf yadif=1:-1:0
 インタレースを解除して60fps化する。(カクツキを抑えヌルヌルな映像にする)

-vf scale=1280:-1
 元の映像が 1440x1080 なので1割程度ダウンサイズ。(画質を維持しつつデータサイズを圧縮するため)

UbuntuをVirtualBox上で動かす

WindowsにVirtualBoxをインストールしてLinuxの1つであるUbuntuを動かしてみる。

UbuntuにはVirtualBox用のディスク・イメージが用意されているのでセットアップが簡単。

「基本設定」

1.処理速度を上げるため、メモリーを2G、CPUの数を4つに変更。

2.Windowsとの共有フォルダを設定

VirtualBoxの「設定」ウィンドウを開き、「共有フォルダ」を選択。


「追加」ボタンをクリックして「共有フォルダの追加」ウィンドウを開く。

「自動マウント」を選択するとUbuntu上では「media」フォルダ内に「sf_共有フォルダ名」でマウントされる。