狠狠撸
Submit Search
今时の尝颈苍耻虫における骋笔鲍エンコード事情2018
?
2 likes
?
8,779 views
Z
zgock
Follow
东海道らぐ名古屋2018/12の尝罢で使用した発表スライドです
Read less
Read more
1 of 21
Download now
Download to read offline
More Related Content
今时の尝颈苍耻虫における骋笔鲍エンコード事情2018
1.
今時のLinuxにおける GPUエンコーディング事情 2018年末版 安藤 達也(zgock) 東海道らぐ openSUSEユーザ会
2.
zgock?お前誰よ? 安藤と申します 愛知県の隅っこで流しのエンジニアやってます openSUSE使いです ただの家庭内rootです 以前東海道らぐのLT用に起こしたXenのスライ ドが狠狠撸Shareで40000ビュー超えてて吹い たw 「Xenとzfsで作る家庭内VDIサーバ」 最近「仮想化ヲタ」というより 「VGAヲタ」であると気づきました 世間の人はVGA二桁枚も常備してないね、うん
3.
録画データ、溜まってませんか? はい、うちは溜まってます 家庭内録画環境は円熟期に PT2/PT3等の録画カードの普及 優秀な録画用アプライアンスの登場 EPGStation Chinanchu ts2形式で保存すると1時間の地デジ/BS番組 で数GBのサイズに 真田丸全50話録画して 一話6GB*50=300GB
4.
エンコード、重いですよね Linuxではソフトウェアエンコーディングが 主流 x264等が下位レイヤ 各種変換ツールが上位レイヤ ffmpeg HandBrake CPUにもよるけど、実時間等速変換ぐらいが精 一杯 1時間の番組を変換するのに1時間 CPU100%使うので他のことが出来ない GPUがあるじゃない
5.
GPUエンコーディングおさらい 過去何回も紹介してるのでまとめとして AMD VCE(Video Coding
Engine) NVIDIA NVENC(NVidia ENCoder) Intel QSV(Quick Sync Video)
6.
Linuxで扱うには(過去形) Intel QSV Intel Media
SDKが必要 カーネル決め打ち&brob driverで制約が多い 現行iGPUのみ対応で過去製品はガンガン切り捨てる AMD VCE amdgpuドライバの登場前はwindowsのみ amdgpuドライバ登場後にgstreamerが対応 NVIDIA NVENC NVIDIA SDKで対応 ffmpegが対応しているが配布ライセンスの都合上 自前ビルドが必要
7.
2018年現在、事情が変わってきました VA-API Linux上での汎用デコード/エンコードAPI Intel/AMDのGPUデコーダ/エンコーダに対応 標準IntelドライバでSandyBridge以降対応 ffmpeg等でハンドリング可能 iGPUの機能をフル活用するわけではないので、 Media SDKと比較して速度?画質等落ちる Broadwell以降対応のIntel製OSSドライバがある MediaSDKと同等のフル機能が扱える openSUSE Tumbleweedであれば標準パッケにある zypper
in intel-media-driver
8.
ffmpegでVA-APIを使う ffmpeg 4.0 VA-API周辺に大幅な最適化が入った 適切なドライバを使えば3.x比で1.5倍速に openSUSE Tumbleweedでは標準パッケに zypper
in ffmpeg-4 Leap 15.1(2月リリース予定)でLeapにも入るとい いなあ
9.
ffmpegでVA-API 前準備(1) ドライバの確認 ls /usr/lib64/dri ほにゃらら_drv_video.soがVA-APIドライバ i965_drv_video.so libva標準のIntelドライバ(SandyBridge以降) iGPUのフル機能は使ってないので性能はMedia SDKよりやや落ちる iHD_drv_video.so Intel拡張VA-APIドライバ(Broadwell以降専 用) Media SDKとほぼ同等の性能 radeonsi_drv_video.so 標準のAMDドライバ
10.
ffmpegでVA-API 前準備(2) ドライバの詳細確認 zypper in libva-utils VA-API確認ツール「vainfo」のインストール export
LIBVA_DRIVER_NAME=iHD 確認したドライバの1st wordを指定 vainfo 対応しているフォーマットを確認できる 「VAEntrypointEncSlice」エンコード対応 「VAEntrypointVLD」デコード対応 iHDドライバはh264、HEVC(h265)のエンコードに 対応 i965ドライバはVP8にも対応 ただしフルハードエンコードではないので遅い
11.
ffmpegでVA-API エンコード ffmpeg –vaapi_device /dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format
vaapi -i input.ts ←入力ファイル -vf ‘format=nv12| vaapi,hwupload,deinterlace_vaapi’ -c:v h264_vaapi -c:a ac3 -qp 20 output.mp4
12.
ffmpegでVA-API オプション解説 –vaapi_device /dev/dri/renderD128 VA-APIで使うデバイスを指定 マザー実装やプライマリ/セカンダリで使えるデバイ スが異なる場合がある 大概は/dev/dri/renderDほにゃららで良いが /dev/dri/cardほにゃららでないとダメな場合がある ls /dev/driで使えるデバイス一覧を見て 指定してエラーにならないデバイスを探す(雑)
13.
ffmpegでVA-API オプション解説 -hwaccel vaapi デコーダにVA-APIを使用する -hwaccel_output_format vaapi エンコーダにVA-APIを使用する -i
input.ts 入力ファイルを指定 VA-APIの詳細オプションを渡す前に指定する 必要があるため、必ず以降のオプションより前 に指定しなければならない
14.
ffmpegでVA-API オプション解説 -vf ‘format=nv12| vaapi,hwupload,deinterlace_vaapi,scale_vaapi =1280x800’ VA-APIの詳細オプション format=nv12|vaapi デコードフォーマット、intelの場合これで固定 hwupload ハードウェアデコーダからエンコーダに直接スト リームを送る deinterlace_vaapi ハードウェアフィルタによるインターレース解除 scale_vaapi=1280x800 ハードウェアフィルタによるスケーリング
15.
ffmpegでVA-API オプション解説 -c:v h264_vaapi ビデオエンコーディングフォーマットを指定す る -c:v hevc_vaapiでh265エンコード -c:a
ac3 オーディオエンコーディングフォーマットを指 定する エンコード不要(-c:a copy)でも良いが、TV放送の aacはmp4コンテナに本来収められない形式なので bitstream errorが出る -fflags +discardcorrupt と –bsf:a aac_adtstoascを付けることで回避はできる オーディオエンコード分の負荷は誤差
16.
ffmpegでVA-API オプション解説 -qp 20 エンコード品質(ビットレート)の設定 一番のキモ -qp 1で最も高画質大容量、-qp
99で最も低画 質小容量になる -cbr、-vbr等でビットレート指定可能ではあ るが、intel qsvでは-qp指定が一番良好な結果 が出る 実用的には –qp 15~18でほぼ無劣化、-qp 30 あたりがほぼ限界画質(このへんは主観)
17.
実機テスト Fujitsu FUTRO MS936 富士通のビジネスシンクライアント Celeron
3955U (Skylake) 楽天で中古が9980円だった 32GB SSDを500GBに交換してTumbleweed
18.
実機テスト テストソース 地上デジタル録画 30分のア ニメ ガンダムビルドファイターズ第五話(約3.2GB) iHD(速度)
iHD(サイズ) i965(速度) i965(サイズ) -qp 18 h264 x6.5 1.7GB x4.1 1.8GB -qp 20 x6.5 1.2GB x4.2 1.3GB -qp 25 x6.5 632MB x4.1 721MB -qp 30 x6.5 334MB x4.1 392MB -qp 35 x6.5 208MB x4.0 262MB -qp 20 hevc x2.2 1.2GB x1.6 1.3GB
19.
サンプル再生タイム これよりただのアニメ鑑賞会になります
20.
まとめ 最近のCeleronあなどれん なぁ
21.
ありがとうございました!
Download