-
Notifications
You must be signed in to change notification settings - Fork 4
補足3 FFmpegのHW支援機能
現状のさきゅばす1.xx用ffmpegの(GPU)HW支援はこんな感じです(saccubus1.65.7.1 ffmpeg80914d 2016/07/07)
HW支援なので使えるHWの条件がそれぞれあります
-
DXVA2(*1) Windows DirectXのHWアクセラレーション
入力オプションに-hwaccel dxva2 -threads 1
追加 -
NVENC(*2) NVIDIA のグラフィックスのHW支援
出力オプションの-vcodec libx264 -pix_fmt yuv420p
を
-vcodec h264_nvenc -pix_fmt nv12
に変更
使用可能なNVIDIA グラフィックボードは
https://developer.nvidia.com/nvidia-video-codec-sdk#gpulist
を見て下さい。
グラフィックボードの種類により並列エンコード数に制限があり それ以上の実行を行うと
ffmpegがエラー終了します。 Desktop&Mobile-GeForce (Kepler & Maxwell)は2まで
さきゅばすの同時変換数を制限値”2”以下にして下さい。
- Intel QSV(*3) Intel CPU内蔵GPUのHW支援
出力オプションの-vcodec libx264 -pix_fmt yuv420p
を
-vcodec h264_qsv -look_ahead 0
に変更
Intel CPUで使用可能なものは以下でCPUの型番を検索して
クイックシンクビデオ(Quick Sync Video)の項目を確認して下さい。
http://ark.intel.com/ja#@Processors
*1 -threads 1
を入力オプションに入れれば出力をフレームスレッディングしても問題ないようです
NVENC, QSVはthreading機能無いが -threads 0
を指定しても大丈夫のよう
*2 オプション -pix_fmt yuv420p を指定すると画面下半分の色が変になる。 nv12なら問題なさそう
*3 グラボ付きPCでデバイスマネージャに表示されない内蔵GPUを使うにはマザーボードのBIOSでiGPU MultiMoniter
を有効にする必要がある
Windows10 64bit core-i7 6700k (skylake) NVIDIA GTX TITANX
配布オプション PC_640x384アス比共通による
変換時間
libx264 1分55秒 66MB
NVENC 1分40秒 60MB
QSV 1分36秒 62MB
変換時間 変換後サイズ 変換中使用率
libx264 3分36秒 82MB CPU70%
NVENC 3分48秒 314MB(*4) CPU20%-GTX50%
QSV 3分45秒 293MB(*4) CPU20%-GTX0%-iGPU??%
*4 -crfオプションがうまく効いてない可能性
*追記 効かないcrfの代わりに -b:v ビットレート指定を変更すると簡単に容量が小さくなりました。
このflvの場合は変換後の画質は変わらなかった。
-presetを変えても変化がないが-q指定をすると画質が大幅に落ちたので止めました。
ユーザー生放送(動画リクエスト放送ではない)の放送時最大ビットレートは384kbps(深夜480kbps)?
15fps→30fpsに変換しているがコメントがない部分は実質dup(Bフレでビットレート増加は殆どない?)
NVENC -b:v 300k 3分58秒 116MB
NVENC -b:v 500k 3分59秒 157MB
QSV -b:v 300k 3分56秒 108MB
(参考: libx264は -crf 23 -b:v 1400k で変換後の画像ビットレートは 314kbps)
-
Jenkinsビルドさきゅばす1.xx用ffmpeg ffmpeg_1.x_20160704_050323