CentOSでQSVを使用する

Linux (CentOS 7.1)でQSVを使用してエンコードする実験を行った。

centos_install_0075.png

こんな感じで実行できる。



実験環境



CentOS 7.1.1503 x64
Intel Core i7 4770K
Asrock Z97E-ITX/ac
RAM 8GB
SSD TOSHIBA THNSNJ128GCST 128GB



必要なもの



このあと書いていくけど、

QSVEnc 2.19
ベースとなる開発環境
C++11コンパイラ (g++ / clang++)
Media SDKのインストール
yasmのインストール

のあたりが必要。



Media SDKのインストール (必須)



CentOSでQSVを実行するにはMedia SDKのインストールが必要なので、手順に従ってインストールし、付属バイナリでのインストールテストを行う。

libmfx.aの配置がどうの、という記述がネット上に存在するが、QSVEncは自前でlibmfxを含むので気にしない。



ライブラリのビルド (オプション)



QSVEncCでオプションとして使用可能なffmpegVapourSynthAvxsynthをビルド・インストールしておくと、QSVEncでこれらを使用した機能が有効になる。



QSVEncのビルド



yasmがインストールされていなければ、インストールする。

tar -xvf yasm*.tar.gz
cd yasm*/
./configure
make -j8 && sudo make install
cd ..


QSVEnc2.19以降をダウンロードする。

QSVEncをビルドする。

unzip QSVEnc_*.zip
cd QSVEnc*/
7za x QSVEnc_src.7z
cd QSVEnc
./configure
make -j8 && sudo make install
cd ..

ひとまずgcc 4.8.3 / gcc 5.2.0 / clang++ 4.3ではコンパイルできた。

ffmpeg、VapourSynth、Avxsynthなどのライブラリがインストールされていれば、自動的に検出され、それらを用いた機能が有効になる。

※記事中のスクリーンショットは2.18とバージョン表示されていますが、開発中だったためです。

configure後
centos_install_0066.png


qsvenccがビルドできた。
centos_install_0067.png


実行
centos_install_0075.png

vslsmashsource経由できちんとQSVエンコードできている。


また、avxsynthでもエンコード可能。

centos_install_0076.png



機能一覧




QSVEncC (x64) 2.18 by rigaya, Oct 26 2015 06:46:18 (gcc 4.8.3/Linux/avx2)
based on Intel(R) Media SDK Encoding Sample 6,0,0,98947
avi reader: disabled
avs reader: enabled
vpy reader: enabled
avqsv reader: enabled [H.264/AVC, HEVC, MPEG2, VC-1]

Environment Info
OS : CentOS Linux release 7.1.1503 (Core) (x64)
CPU: Intel Core i7-4770K @ 3.50GHz [TB: 4.20GHz] (4C/8T) <Haswell>
RAM: Used 2343 MB, Total 7429 MB
GPU: Intel Graphics / Driver : 16.4.2.1.39163-ubit


Media SDK Hardware API v1.16
Supported Enc features:
Codec: H.264/AVC
CBR VBR AVBR QVBR CQP VQP LA LAHRDICQ LAICQVCM
RC mode ××××××
Fixed Func ×××××××××××
Interlace ××××××
SceneChange ××××××
VUI info ××××××
Trellis ×××××××××××
Adaptive_I ××××××
Adaptive_B ××××××
WeightP ×××××××××××
WeightB ×××××××××××
B_Pyramid ×××××××
+Scenechange×××××××××××
+ManyBframes×××××××
Ext_BRC ×××××××××××
MBBRC ×××××××××××
LA Quality ×××××××××××
QP Min/Max ××××××
IntraRefresh ×××××××××××
No Debloc ××××××
Windowed BRC ×××××××××××
PerMBQP(CQP) ×××××××××××
DirectBiasAdj×××××××××××
MVCostScaling×××××××××××


ICQが動作しない…残念すぎる。ドライバのせいなのだろうか?



QSVEncのコードに大量の変更を加えて、なんとか動くようにした。実験の結果、CQPならひとまずちゃんと動いているようでよかった。

コードのLinux対応は、基本的にはWindowsのAPIをC++11に置き換えたり、WindowsのAPIに対応するLinux版コードを書いて疑似的に再現したりといったところ。時間取得関係がC++11のchronoで済ませられたのはよかったが、スレッド関係はC++11だけで完全に置き換えられず、SetEvent/WaitForSingleObjectもどきとかを作ったりした。

まだ不安定なことがあるのと、Windows版にあるいくつかの機能はLinuxでは動作しない/若干動作が違うのが仕様だったりするので注意。

あと、あんまりLinuxのことは知らないので、なんか変なことをしているかもしれない。



Skylakeで動かない → まだ対応してないらしい

Braswellで動かない → そもそも対応してないらしい、回路は載ってるはずなのに

VP8は? → 未検証です

chronoとかalignasとかがないとか言われる → gccがふるいのかも?

ビルド中警告が出る → 出ます、そういうものです

Linuxのxxxがわかりません → きっとわたしにもわかりません

対応OSは? → Media SDKがCentOS 7.1のサポートのみらしいです

Windowsでgccビルド → gccビルドはLinux専用です


スポンサーサイト



コメントの投稿

非公開コメント

No title

CentOSでQSVEncCがコンパイル出来るようになったというので、自分はlinux mint 17.2で挑戦。

手間はかかりましたが、何とか成功しました。
Ubuntu系でも問題ないようです。

Re: No title

Linux mintでも動作するとの報告ありがとうございます。

ほかの系統のOSで問題ないかは不安だったので、うまくいってよかったです。
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clfilters 
- OpenCLベースの複数のGPUフィルタ集
- 対応フィルタの一覧等はこちら

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX512対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: まじぽか太郎様

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

rkmppenc
- Rockchip系SoCのhwエンコーダ

x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定
- これまでの測定結果はこちら

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)
SVT-AV1 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR