狠狠撸

狠狠撸Share a Scribd company logo
16
Most read
17
Most read
18
Most read
今時のLinuxにおける
GPUエンコーディング事情
2018年末版
安藤 達也(zgock)
東海道らぐ
openSUSEユーザ会
zgock?お前誰よ?
安藤と申します
愛知県の隅っこで流しのエンジニアやってます
openSUSE使いです
ただの家庭内rootです
以前東海道らぐのLT用に起こしたXenのスライ
ドが狠狠撸Shareで40000ビュー超えてて吹い
たw
「齿别苍と锄蹿蝉で作る家庭内痴顿滨サーバ」
最近「仮想化ヲタ」というより
「VGAヲタ」であると気づきました
世間の人はVGA二桁枚も常備してないね、うん
録画データ、溜まってませんか?
はい、うちは溜まってます
家庭内録画環境は円熟期に
PT2/PT3等の録画カードの普及
優秀な録画用アプライアンスの登場
EPGStation
Chinanchu
ts2形式で保存すると1時間の地デジ/BS番組
で数GBのサイズに
真田丸全50話録画して
一話6GB*50=300GB
エンコード、重いですよね
Linuxではソフトウェアエンコーディングが
主流
x264等が下位レイヤ
各種変換ツールが上位レイヤ
ffmpeg
HandBrake
CPUにもよるけど、実時間等速変換ぐらいが精
一杯
1時間の番組を変換するのに1時間
CPU100%使うので他のことが出来ない
GPUがあるじゃない
GPUエンコーディングおさらい
過去何回も紹介してるのでまとめとして
AMD VCE(Video Coding Engine)
NVIDIA NVENC(NVidia ENCoder)
Intel QSV(Quick Sync Video)
Linuxで扱うには(過去形)
Intel QSV
Intel Media SDKが必要
カーネル決め打ち&brob driverで制約が多い
現行iGPUのみ対応で過去製品はガンガン切り捨てる
AMD VCE
amdgpuドライバの登場前はwindowsのみ
amdgpuドライバ登場後にgstreamerが対応
NVIDIA NVENC
NVIDIA SDKで対応
ffmpegが対応しているが配布ライセンスの都合上
自前ビルドが必要
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
ffmpegでVA-APIを使う
ffmpeg 4.0
VA-API周辺に大幅な最適化が入った
適切なドライバを使えば3.x比で1.5倍速に
openSUSE Tumbleweedでは標準パッケに
zypper in ffmpeg-4
Leap 15.1(2月リリース予定)でLeapにも入るとい
いなあ
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ドライバ
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にも対応
ただしフルハードエンコードではないので遅い
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
ffmpegでVA-API オプション解説
–vaapi_device /dev/dri/renderD128
VA-APIで使うデバイスを指定
マザー実装やプライマリ/セカンダリで使えるデバイ
スが異なる場合がある
大概は/dev/dri/renderDほにゃららで良いが
/dev/dri/cardほにゃららでないとダメな場合がある
ls /dev/driで使えるデバイス一覧を見て
指定してエラーにならないデバイスを探す(雑)
ffmpegでVA-API オプション解説
-hwaccel vaapi
デコーダにVA-APIを使用する
-hwaccel_output_format vaapi
エンコーダにVA-APIを使用する
-i input.ts
入力ファイルを指定
VA-APIの詳細オプションを渡す前に指定する
必要があるため、必ず以降のオプションより前
に指定しなければならない
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
ハードウェアフィルタによるスケーリング
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を付けることで回避はできる
オーディオエンコード分の負荷は誤差
ffmpegでVA-API オプション解説
-qp 20
エンコード品質(ビットレート)の設定
一番のキモ
-qp 1で最も高画質大容量、-qp 99で最も低画
質小容量になる
-cbr、-vbr等でビットレート指定可能ではあ
るが、intel qsvでは-qp指定が一番良好な結果
が出る
実用的には –qp 15~18でほぼ無劣化、-qp 30
あたりがほぼ限界画質(このへんは主観)
実機テスト
Fujitsu FUTRO MS936
富士通のビジネスシンクライアント
Celeron 3955U (Skylake)
楽天で中古が9980円だった
32GB SSDを500GBに交換してTumbleweed
実機テスト
テストソース 地上デジタル録画 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
サンプル再生タイム
これよりただのアニメ鑑賞会になります
まとめ
最近のCeleronあなどれん
なぁ
ありがとうございました!
Ad

Recommended

今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
VirtualTech Japan Inc.
?
顿辞肠办别谤と笔辞诲尘补苍の比较
顿辞肠办别谤と笔辞诲尘补苍の比较
Akihiro Suda
?
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
?
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
?
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
?
本当は楽しいインターネット
本当は楽しいインターネット
Yuya Rin
?
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
Takeshi HASEGAWA
?
コンテナ未経験新人が学ぶコンテナ技术入门
コンテナ未経験新人が学ぶコンテナ技术入门
Kohei Tokunaga
?
ASP.NET Core の ? パフォーマンスを支える ? I/O Pipeline と Channel
ASP.NET Core の ? パフォーマンスを支える ? I/O Pipeline と Channel
Joni
?
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
Takayuki Shimizukawa
?
インターネットの仕组みと滨厂笔の构造
インターネットの仕组みと滨厂笔の构造
Taiji Tsuchiya
?
颈苍颈迟谤补尘蹿蝉について
颈苍颈迟谤补尘蹿蝉について
Kazuhiro Nishiyama
?
滨齿事业者とインターネットの未来
滨齿事业者とインターネットの未来
Yoshiki Ishida
?
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
ryos36
?
自宅サーバ仮想化
自宅サーバ仮想化
anubis_369
?
笔补肠别尘补办别谤を使いこなそう
笔补肠别尘补办别谤を使いこなそう
Takatoshi Matsuo
?
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
?
wakamonog6 インターネットの裏側の仕組み
wakamonog6 インターネットの裏側の仕組み
Taiji Tsuchiya
?
30分でわかる! コンピュータネットワーク
30分でわかる! コンピュータネットワーク
Trainocate Japan, Ltd.
?
颁丑补迟骋笔罢は思ったほど贤くない
颁丑补迟骋笔罢は思ったほど贤くない
Carnot Inc.
?
コンテナにおけるパフォーマンス调査でハマった话
コンテナにおけるパフォーマンス调査でハマった话
Yuta Shimada
?
ガチで闻く!ヤフーの翱辫别苍厂迟补肠办プライベート?クラウドの実态とは
ガチで闻く!ヤフーの翱辫别苍厂迟补肠办プライベート?クラウドの実态とは
Brocade
?
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
kazuhcurry
?
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
ManaMurakami1
?
qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所
Masahiro NAKAYAMA
?
できる!并列?并行プログラミング
できる!并列?并行プログラミング
Preferred Networks
?
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
?
How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
?
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
?
碍痴惭环境上にルーターを作る/东海道らぐ伊势2018
碍痴惭环境上にルーターを作る/东海道らぐ伊势2018
zgock
?

More Related Content

What's hot (20)

ASP.NET Core の ? パフォーマンスを支える ? I/O Pipeline と Channel
ASP.NET Core の ? パフォーマンスを支える ? I/O Pipeline と Channel
Joni
?
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
Takayuki Shimizukawa
?
インターネットの仕组みと滨厂笔の构造
インターネットの仕组みと滨厂笔の构造
Taiji Tsuchiya
?
颈苍颈迟谤补尘蹿蝉について
颈苍颈迟谤补尘蹿蝉について
Kazuhiro Nishiyama
?
滨齿事业者とインターネットの未来
滨齿事业者とインターネットの未来
Yoshiki Ishida
?
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
ryos36
?
自宅サーバ仮想化
自宅サーバ仮想化
anubis_369
?
笔补肠别尘补办别谤を使いこなそう
笔补肠别尘补办别谤を使いこなそう
Takatoshi Matsuo
?
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
?
wakamonog6 インターネットの裏側の仕組み
wakamonog6 インターネットの裏側の仕組み
Taiji Tsuchiya
?
30分でわかる! コンピュータネットワーク
30分でわかる! コンピュータネットワーク
Trainocate Japan, Ltd.
?
颁丑补迟骋笔罢は思ったほど贤くない
颁丑补迟骋笔罢は思ったほど贤くない
Carnot Inc.
?
コンテナにおけるパフォーマンス调査でハマった话
コンテナにおけるパフォーマンス调査でハマった话
Yuta Shimada
?
ガチで闻く!ヤフーの翱辫别苍厂迟补肠办プライベート?クラウドの実态とは
ガチで闻く!ヤフーの翱辫别苍厂迟补肠办プライベート?クラウドの実态とは
Brocade
?
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
kazuhcurry
?
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
ManaMurakami1
?
qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所
Masahiro NAKAYAMA
?
できる!并列?并行プログラミング
できる!并列?并行プログラミング
Preferred Networks
?
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
?
How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
?
ASP.NET Core の ? パフォーマンスを支える ? I/O Pipeline と Channel
ASP.NET Core の ? パフォーマンスを支える ? I/O Pipeline と Channel
Joni
?
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
Takayuki Shimizukawa
?
インターネットの仕组みと滨厂笔の构造
インターネットの仕组みと滨厂笔の构造
Taiji Tsuchiya
?
颈苍颈迟谤补尘蹿蝉について
颈苍颈迟谤补尘蹿蝉について
Kazuhiro Nishiyama
?
滨齿事业者とインターネットの未来
滨齿事业者とインターネットの未来
Yoshiki Ishida
?
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
ryos36
?
自宅サーバ仮想化
自宅サーバ仮想化
anubis_369
?
笔补肠别尘补办别谤を使いこなそう
笔补肠别尘补办别谤を使いこなそう
Takatoshi Matsuo
?
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
?
wakamonog6 インターネットの裏側の仕組み
wakamonog6 インターネットの裏側の仕組み
Taiji Tsuchiya
?
30分でわかる! コンピュータネットワーク
30分でわかる! コンピュータネットワーク
Trainocate Japan, Ltd.
?
颁丑补迟骋笔罢は思ったほど贤くない
颁丑补迟骋笔罢は思ったほど贤くない
Carnot Inc.
?
コンテナにおけるパフォーマンス调査でハマった话
コンテナにおけるパフォーマンス调査でハマった话
Yuta Shimada
?
ガチで闻く!ヤフーの翱辫别苍厂迟补肠办プライベート?クラウドの実态とは
ガチで闻く!ヤフーの翱辫别苍厂迟补肠办プライベート?クラウドの実态とは
Brocade
?
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
kazuhcurry
?
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
ManaMurakami1
?
qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所
Masahiro NAKAYAMA
?
できる!并列?并行プログラミング
できる!并列?并行プログラミング
Preferred Networks
?
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
?

More from zgock (8)

GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
?
碍痴惭环境上にルーターを作る/东海道らぐ伊势2018
碍痴惭环境上にルーターを作る/东海道らぐ伊势2018
zgock
?
openSUSEで作る仮想化環境 -KVM,Xen,Docker 仮想化技術選択のポイント -. /oscnagoya2018
openSUSEで作る仮想化環境 -KVM,Xen,Docker 仮想化技術選択のポイント -. /oscnagoya2018
zgock
?
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
zgock
?
今时の尝颈苍耻虫における骋笔鲍エンコード事情
今时の尝颈苍耻虫における骋笔鲍エンコード事情
zgock
?
搁别苍’辫测の御绍介
搁别苍’辫测の御绍介
zgock
?
しつこく齿别苍と锄蹿蝉で作る家庭内惫诲颈サーバ2015年版
しつこく齿别苍と锄蹿蝉で作る家庭内惫诲颈サーバ2015年版
zgock
?
齿别苍と锄蹿蝉で作る家庭内痴顿滨サーバ
齿别苍と锄蹿蝉で作る家庭内痴顿滨サーバ
zgock
?
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
?
碍痴惭环境上にルーターを作る/东海道らぐ伊势2018
碍痴惭环境上にルーターを作る/东海道らぐ伊势2018
zgock
?
openSUSEで作る仮想化環境 -KVM,Xen,Docker 仮想化技術選択のポイント -. /oscnagoya2018
openSUSEで作る仮想化環境 -KVM,Xen,Docker 仮想化技術選択のポイント -. /oscnagoya2018
zgock
?
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
zgock
?
今时の尝颈苍耻虫における骋笔鲍エンコード事情
今时の尝颈苍耻虫における骋笔鲍エンコード事情
zgock
?
搁别苍’辫测の御绍介
搁别苍’辫测の御绍介
zgock
?
しつこく齿别苍と锄蹿蝉で作る家庭内惫诲颈サーバ2015年版
しつこく齿别苍と锄蹿蝉で作る家庭内惫诲颈サーバ2015年版
zgock
?
齿别苍と锄蹿蝉で作る家庭内痴顿滨サーバ
齿别苍と锄蹿蝉で作る家庭内痴顿滨サーバ
zgock
?
Ad

今时の尝颈苍耻虫における骋笔鲍エンコード事情2018