(FFmpeg3.0に対応した記事はこちら)
少し前のgit版から正常に動作するようになっていたQSVのH264エンコードがStable版2.8でも動作するようになり、以前の記事のような処理は不要になりました。
Windows版のビルド(拡張なし)
Windowsでのビルド仕方は前回とほぼ同じで、mfx_dispatchさえあれば良いようです。
前回の使用した拙作のパッチも必要ありません。
必要なツールの準備 (MSYS + MinGW + GCC)
今回も XhmikosR’s さんのところのをそのまま使わせていただきました。
(使用したバージョンは MSYS_MinGW-w64_GCC_520_x86-x64_Full.7z 2015-09-10版)
「MSYS」をCドライブのルートに展開して、「msys.bat」を実行。以降CLIでの操作。
(「home」以下にユーザー名のディレクトリが作成されるので、ファイルはWindows側でそこに展開)
mfx_dispatchのビルド
mfx_dispatch-master.zipを「Download ZIP」からダウンロードして展開&ビルド。
$ cd ~/mfx_dispatch-master $ autoreconf -fiv $ PKG_CONFIG_PATH="/mingw/i686-w64-mingw32/lib/pkgconfig" \ ./configure --prefix="/mingw/i686-w64-mingw32" \ --disable-shared \ --enable-static \ --enable-fast-install $ make $ make install
FFmpegのビルド
FFmpegのソースを公式サイトからダウンロードして展開。
もしくはGitHubあたりからもってくる。(ディレクトリ名が微妙に違うけど)
Release n2.8 · FFmpeg/FFmpeg · GitHub
FFmpeg/FFmpeg at release/2.8 · GitHub
ビルド。
$ cd ~/ffmpeg-2.8 $ PKG_CONFIG_PATH="/mingw/i686-w64-mingw32/lib/pkgconfig" \ ./configure --prefix="/mingw/i686-w64-mingw32" \ --enable-gpl \ --enable-version3 \ --enable-libmfx \ --enable-w32threads \ --disable-dxva2 \ --disable-debug \ --disable-doc \ --disable-ffplay \ --disable-ffprobe \ --pkg-config-flags="--static" \ --extra-ldflags="-static" \ --extra-libs="-lsupc++ -lstdc++" $ make
一番下の行はなくてもビルドできたけど念の為・・・
QSVENC_H264の使い方
基本的な使い方は次の通り。
CBRの場合
ffmpeg -i input.ts -vcodec h264_qsv -b 2000k -maxrate 2000k output.mp4
VBRの場合
ffmpeg -i input.ts -vcodec h264_qsv -b 4000k output.mp4
CQPの場合
ffmpeg -i input.ts -vcodec h264_qsv -q 20 output.mp4
Haswell以降で使えるICQとかには対応してないようだが、私はIvyBridge使いなので気にしない。
QSVENC_H264の拡張
これで公式FFmpegでQSVでのH264高速エンコードが可能になったわけだが、悲しいことにQSVのCBRやVBRは画質的に評判がよろしくない。
rigaya氏のQSVEncでIフレーム、Pフレーム、BフレームのQP値を設定するCQPがよく使われているようで、非公式版のFFmpegQSVでも可能だった。
というわけで公式の2.8にこれを追加するパッチを作ってみた。
2.8用のパッチをffmpegのディレクトリ内で適用。
patch -p1 < ffmpeg-2.8_qsv.diff
これでlibmfxを有効にしたFFmpegをビルドしてあげれば
ffmpeg -i input.ts -vcodec h264_qsv -qpi 24 -qpp 26 -qpb 27 output.mp4
こんな感じでエンコードできるようになる、はず。
追記
2016/02/17
記事タイトルに「2.8」を追加。(別記事で3.0を書いたため)
2015/09/25
ビルドの仕方を追加。(前回とほぼ同じだけど)
コメント
[…] そこで以下のページを参考に自前でビルドしました。 FFmpegのQSV(H264)を拡張してみる […]