FFmpeg で QSV を使う

先日、FFmpeg で動画変換を試しました。

FFmpeg で動画変換 – あららぼ

実際にやってみると、変換に時間がかかることが判明...
調べたところ、GPU を使うと高速変換できることが分かったので、Intel CPU 内蔵 GPU の QSV を使うことにしました。

Intel Quick Sync Video - Wikipedia
Intel Quick Sync Video(インテル クイックシンクビデオ、QSV)とはIntelによって開発されたハードウェアによるビデオエンコード・デコード技術の名称である。

QSV で変換

QSV を使ったハードウェアエンコーダ例

$ ffmpeg -hwaccel_output_format qsv -i sample.MTS -filter:v yadif -tune film -q:v 18 -preset veryfast -c:v h264_qsv -c:a copy -movflags faststart -look_ahead 0 sample.mp4

※拡張子 .MTS は AVCHD 形式の動画ファイルになります。
(AVCHD は、私が普段使っているビデオカメラ HDR-CX670 の標準形式)

ソフトウェアエンコーダ(非 QSV)の場合は、こんな感じ。

$ ffmpeg -i sample.MTS -tune film -crf 18 -preset veryfast -filter:v yadif -c:a copy -movflags faststart sample.mp4

コンテナフォーマットの変更

これは QSV 使ってませんが、コンテナフォーマットだけを変更して時短することもできます。

# MPEG2 -> MPEG4 にコンテナだけ変える(動画コーデック・音声コーデックともに無変換)
$ ffmpeg -i sample.mpg -vcodec copy -acodec copy sample.mp4