Intel Pentium Processor J5040のIntel Quick Sync Videoを試す

 J5040-ITXというIntel Pentium J5040をオンボードで搭載したマザボがあり、このCPUにおけるQSVを試してみた。

  • ffmpegでhevc_qsvを用いMPEG2TSからH.265+AACへ変換。音声は丸コピ
.\ffmpeg.exe `
-y -i in.ts -c:v hevc_qsv -preset veryfast -map 0:v `
-c:a copy -map 0:a `
-filter:v bwdif=mode=send_field:parity=auto:deint=all `
out.mp4
  • 処理速度:-preset veryfastの場合speed=2x~3x(処理中に出力されるffmpegの統計情報から)。それなりに速い。このCPUにおいてはソフトエンコの2、3倍ぐらい?-preset veryslowの場合speed=0.4x~0.5xぐらいで同じくソフトエンコの2、3倍といったところであった
  • 画質:悪い。ソフトエンコの場合veryfastでもかなり良い
  • 圧縮率:画質の低さを考慮すると低い
  • その他:出力された動画をMPCで再生してみたが、シークした際に目的の位置から再生が始まるまでなにか処理をする様で時間がかかっているようだ。libx265で作成した動画では起きない。恐らくキーフレームが存在しないため、動画の最初からシークする位置までの差分計算を全部行っているのだろう
    • 追記:-g 30、などフレーム系オプションを指定するだけでシークは改善されるが、値によってはファイルサイズが大きくなる。QSVの場合自動ではやってくれないらしい
.\ffmpeg.exe `
-y -i in.ts -c:v hevc_qsv -g 30 -preset veryfast -map 0:v `
-c:a copy -map 0:a `
-filter:v bwdif=mode=send_field:parity=auto:deint=all `
out.mp4
  • 結論高品質な圧縮動画を速く作る目的には向かない
    • -preset veryslowでMPEG2TSをHEVCに変換した場合、このCPUのQSVでは等倍速度すら出ないが(speed=0.696とか)、ソフトエンコよりは速く、画質と圧縮率はまぁまぁなので使い所はある。-preset slow以下をバニラで使った場合はお話にならない
    • -global_qualityオプションで品質を調節できるので画質と圧縮率のバランスを見極めたほうが良いかも。libx265でcrfを設定した様な挙動
    • MPEG2TS動画を-g 30 -global_quality 26でSD画質へトランスコードした場合、speed=1.7xほどで処理出来、1/4~1/3ほどのファイルサイズで少画面なら耐えられる画質に圧縮できる。モバイル等で見るなら良いかも
    • 処理速度と圧縮率の点でlibx264の方が使い勝手が良い

 この程度なら速いCPUを積んでいるマシンからリモートでスクリプトを動かしてソフトウェアエンコードしたほうが速いし使い勝手が良く、ネットワークを介してデータをやり取りするという間接費は発生するが、ハードウェアの制約も無く、1GbpsLAN環境で試してみたところ、-preset veryfastでspeed=2x~3xほどであり、画質もまぁまぁ。
 QSVで速くソフトエンコ並に処理出来る方法があるなら知りたいものだ。
 というか、そもそもこういったクラスのCPUに実装されているQSVは動画の高品質処理用なのだろうか?ライブ配信や通話向けに、品質は少し悪くてもいいから速くエンコードを行いたいという想定なら理解できる。