Chinachu γ(CentOS7.3)でQSVエンコード(1)
(2018年8月13日追記) CentOS 7.4でqsvを利用しています。 CentOS 7.4「Chinachu γ + plex + qsv」の構築ポイント
CentOS7.3でChinachu γを利用しています。
安定して録画ができますが、tsファイルは地上波で1時間7.4GB程あり、1日10時間録画すると1か月で2.2TBです。
そこで、録画後に自動的にスクリプトを走らせて、ffmpegでtsからmp4に変換します。エンコーダーはlibx264ですが、遅いです。そこそこの品質で圧縮すると、1時間の番組で1時間程かかります。
今回紹介するのは、Intel Quick Sync Video(以下QSVと略す)を使って、エンコード時間をlibx264の1/6~1/7にする方法です。
前提条件
この方法が使えるのは、2017年1月4日にリリースされたIntel® Media Server Studio 2017R2のおかげです。ただし、CPUに制限があります。
Intel Coreの第5世代と第6世代のCPU
Intel® Media Server Studio 2017R2では、第5世代(Broadwell, 5000番台)と第6世代(Skylake, 6000番台)のGPUに対応しているので、この制限は外せません。第7世代(Kabylake)のGPUへの対応は不明。
動作環境
今回測定に使用した動作環境は、以下のとおりです。
ハードウェア
名称 | 型番 |
---|---|
CPU | Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz |
マザーボード | H170M-PLUS |
メモリ | 8GB(4GB×2) |
TVチューナーカード | PT3×2 |
ソフトウェア
名称 | バージョン |
---|---|
Linux | version 3.10.0-327.10.1.el7.x86_64 |
CentOS | Linux release 7.3.1611 (Core) |
Intel Media Server Studio | 2017 R2 Community Editions |
エンコード速度の検証
今回エンコード速度の比較を行うために、以下のコマンドを同じtsファイルに対して実行した。
libx264
./usr/bin/ffmpeg -i "./tv/sample.ts" -vcodec libx264 -q 23 -acodec aac -threads 4 -loglevel error "./mp4/sample.mp4"
h264_qsv
./usr/bin/ffmpeg-qsv -i "./tv/sample.ts" -vcodec h264_qsv -q 23 -look_ahead 0 -acodec aac -threads 4 -loglevel error "./mp4/sample.mp4"
上記の違いは、3点です。
(1)ffmpegとffmpeg-qsv 前者は、Chinchuでデフォールトでインストールされているもの。後者は、Intel Media Server Studio 2017R2を使ってqsvエンコードができるもの。
(2)vcodecオプションが、libx264とh264_qsvの違い。
(3)look_aheadオプションが後者だけある。
これで、tsファイルをエンコードした結果は、以下の通りです。
番組名 | 地上/衛星 | エンコード速度 | ファイル圧縮率 | ||
---|---|---|---|---|---|
(h264_qsv) | (libx264) | (h264_qsv) | (libx264) | ||
警視庁いきもの係 | 地上 | 6.95 | 1.24 | 26.4% | 23.4% |
ジャスト・マリッジ | 地上 | 7.39 | 1.05 | 31.6% | 27.5% |
定年女子 | 衛星 | 5.93 | 1.09 | 13.9% | 14.7% |
ミスター・ノーボディ | 衛星 | 6.57 | 0.96 | 21.5% | 21.0% |
京都の極み | 衛星 | 5.32 | 0.79 | 45.2% | 36.6% |
結果は明らかです。h264_qsvをコーデックにすると、libx264と比較してエンコード速度で6~7倍になります。つまり、エンコードしたmp4ファイルのビデオ品質やファイルサイズはほとんど同じで、エンコード時間だけが1/6~1/7になります。
1時間の録画ファイル(7.4GB)は、平均して10分で1.5GBのmp4ファイル(4Mbps)になります。
エンコード速度のバラツキはそれほどありませんが、圧縮率はかなり変動し、50%近い場合も時々あります。
次回は、以下の2つについて説明します。
(1)ffmpeg-qsv(QSV対応のffmpeg)
(2)config.json(Chinachu)の中の”recordedCommand”で指定するシェルスクリプト
Chinachu γ(CentOS7.3)でQSVエンコード(2)へ続く
コメントを残す