QSVEnc 2.04
QSVEncを1.xxから2.xxへ。
QSVEncCにQSVでのデコード機能と、新たなVPPフィルタを追加。
※(2015.07.06 23:50追記) 2.04へ更新。
QSVEnc 2.01
というわけで、いままでβ版だったけど、やっとβを外して先に進むことにした。理由としては、当初の目標だった
・QSVデコードの追加
・カスタムvppフィルタ(透過性ロゴ)の追加
を達成できたため。実は2.01で追加した透過性ロゴフィルタによって内部のコードには結構変更を加えているので、おかしな挙動をすることがある…かもしれない。(つまり2.01は安定版という意味ではない…)
でもともかく、デコードがQSVで行えるようになったことで、CPU使用率が低下し、特にCPUが速くない環境でエンコードの高速化が期待できるし、デコード→フィルタ→エンコードまでを全てGPU側のメモリにおいて処理できるようになり、無駄なメモリコピーが減ったのも高速化につながっているんじゃないかと思う。
QSVデコードの問題としては、Avisynth等で可能だった柔軟なフィルタ処理が行えなくなり、あらかじめvppに用意されているリサイズなどのシンプルなフィルタしか使えなくなるということがある。ただ、今回の透過性ロゴフィルタのように、カスタムvppフィルタを(面倒だけど)作ることで、QSVデコード→QSVエンコードの間に好きな処理を入れられることもわかった。(それなりに速度は落ちるけど…)
QSVEnc
・.NET Framework 4.5に移行。
あわせて簡易インストーラも.NET 4.5に移行。
・Windows10を正しく検出できるように。
実はわりといんちきな方法でごまかしている…
・qaacでのALACモードがmux出来なかったのを修正。
・設定画面のサイズが大きくなることがあったのを修正。
QSVEncC
・QSVでデコードし、デコードからエンコードまでを一貫してQSVで実行可能にした。
--avqsv
avcodec + QSV decoderを使用して読み込む。
入力解像度、入力fpsの設定が不要になる。
デコードからエンコードまでを一貫してQSVで行うため高速。
--avqsv-analyze <int>
libavが読み込み時に解析するファイルの時間を秒で指定。デフォルトは5。
音声トラックなどが正しく抽出されない場合、この値を大きくしてみてください(例:60)。
--audio-file [<int>?][<string>:]<string>
avqsvリーダー使用時のみ有効。
指定したパスに音声を抽出する。出力フォーマットは出力拡張子から自動的に決定する。
[<int>?] で、抽出する音声トラック(1,2,..)を指定できる。
--audio-file 2?"test_out2.aac" とすればtest_out2.aacにトラック番号#2を抽出する。
[<string>:] では、出力フォーマットを指定できる。
--audio-file 2?adts:"test_out2" とすれば、拡張子なしでもadtsフォーマットで出力可能。
--trim <int>:<int>[,<int>:<int>][,<int>:<int>]...
avqsvリーダー使用時のみ有効。指定した範囲のフレームのみをエンコードする。
--audio-copy [<int>[,<int>]...]
avqsvリーダー使用時のみ有効。音声をmuxしながら出力する。
特に何も指定しなければ、全ての音声ストリームがコピーされる。
--copy-audio 1,2 とすれば音声トラック1,2が抽出される。(トラック番号は、1,2,3...)
-f, --format <string>
muxerを使用して出力する。<string>には、出力フォーマットを指定することができる。指定しない場合は、出力拡張子から自動的に決定する。H.264/Elementary Streamで出力する場合には、"raw"を指定する。
・vppとして透過性ロゴフィルタを追加。
通常、複数のオプションを組み合わせて使用する。
例:
--vpp-delogo "logopack.ldp2" --vpp-delogo-select "TBS 1440x1080"
ロゴパックファイル "logopack.ldp2" からロゴ "TBS 1440x1080" を使用。
ロゴ消し処理自体はSSE4.1, AVX, AVX2を使ってCPUで実行している。もとのAviutl版同様、YC48-12bitで処理しているけど、QSVの色空間は基本的にNV12なので、色差成分はケチって4:2:0のまま処理している。また、最終的なフィルタの出力は8bitでしかないので、精度の点でいくつかの処理を端折って高速化している。
--vpp-delogo <string>
ロゴファイルを指定する。".lgd",".ldp",".ldp2"に対応。
--vpp-delogo-select <string>
ロゴパックの場合に、使用するロゴを以下のいずれかで指定する。
・ロゴ名(完全一致!)
・インデックス (1,2,...)
・自動選択用iniファイル
下記の書式に従って、入力ファイル名から自動的にロゴを選択する。
書式
[LOGO_AUTO_SELECT]
logo<連番数字>=<マッチパターン>,<リストに表示されているロゴ名(完全一致!)>
設定ファイルの例
この場合、入力ファイル名が"響け!ユーフォニアム #13 「さよならコンクール」 (BS11).ts"なら、ロゴ名"BS11 1920x1080 v3"が使用される。
--vpp-delogo-pos <int>:<int>
1/4画素精度のロゴ位置の調整。Aviutlで言うところの <位置 X>:<位置 Y>。
--vpp-delogo-depth <int>
ロゴの透明度の補正。デフォルト128。Aviutlで言うところの <深度>。
--vpp-delogo-y <int>
--vpp-delogo-cb <int>
--vpp-delogo-cr <int>
ロゴの各色成分の補正。Aviutlで言うところの <Y>, <Cb>, <Cr>。
QSVEncC 2.00β12 → 2.01
変更点
・--mux-videoオプションを廃止。
raw(H.264/ES)出力の場合以外は自動的にmuxを試みるようになった。H.264/ESで出力する場合は、--format rawを指定するか、出力ファイル名を"拡張子なし" / ".264" / ".h264" / ".avc"などにしてください。
機能の追加。
・透過性ロゴフィルタの追加。
要望の反映。
・avqsvリーダーの標準入力("-")からの読み込みに対応。
例: QSVEncC.exe --avqsv -i - -o test.mp4 < "input.ts"
・muxしながら出力する際に、標準出力("-")に出力できるように。
・--format <string>で、muxしながら出力する際のフォーマットを指定可能に。指定しない場合は、拡張子から自動的に判断する。"raw"を指定することで従来通りH.264/ESで出力する。
パイプ関連はこんな形で大丈夫でしょうか…?
結局解析用のフレームは一度メモリ上においておいてまたあとで使うという、わりと適当な実装です。(そのぶんフレームレート推定はパイプでない時と同等です)
QSVデコードの機能制限
デコード対応コーデック
その他制限 (対応予定なし)
・HEVCデコードにはHaswell以降のCPUと4080ドライバ以降が必要。
・Broadwellで可能なHEVC 10bitデコードが正常に動作しない問題。
・解像度が途中で切り替わるようなケースには非対応。
・途中で音声が増えるようなケースには非対応。
・VFRには非対応。
・MPEG2とかのRFFには対応できない(?)。
2015.07.05 20:30追記
QSVEnc 2.01→2.02
たびたび更新してすみません。
機能の追加
・avqsvリーダーもunicodeファイル名に対応。
バグの修正
・--vpp-delogo, --vpp-half-turnがavqsvリーダー使用時以外に使用できなかった問題を修正。
2015.07.05 23:15追記
QSVEnc 2.02→2.03
更新し過ぎでごめんなさい・・・
バグの修正
・ファイル名が出力側で文字化けする問題を修正。
2015.07.05 23:15追記
QSVEnc 2.03→2.04
バグの修正
プロファイルを選択すると落ちるのを修正。
QSVEnc ダウンロード>>
ダウンロード (ミラー) >>
OneDriveの調子がいまいちの時はミラー(dropbox)からどうぞ。同じものです。
QSVEncBenchmark.zipはベンチマーク用です。(220MBと重いので注意)。run_benchmark.batをダブルクリックで実行です(要 Avisynth + lsmashsource.dll)。
QSVEncCのオプションについてはこちら。
QSVEncCオプション一覧>
QSVEncCにQSVでのデコード機能と、新たなVPPフィルタを追加。
※(2015.07.06 23:50追記) 2.04へ更新。
QSVEnc 2.01
というわけで、いままでβ版だったけど、やっとβを外して先に進むことにした。理由としては、当初の目標だった
・QSVデコードの追加
・カスタムvppフィルタ(透過性ロゴ)の追加
を達成できたため。実は2.01で追加した透過性ロゴフィルタによって内部のコードには結構変更を加えているので、おかしな挙動をすることがある…かもしれない。(つまり2.01は安定版という意味ではない…)
でもともかく、デコードがQSVで行えるようになったことで、CPU使用率が低下し、特にCPUが速くない環境でエンコードの高速化が期待できるし、デコード→フィルタ→エンコードまでを全てGPU側のメモリにおいて処理できるようになり、無駄なメモリコピーが減ったのも高速化につながっているんじゃないかと思う。
QSVデコードの問題としては、Avisynth等で可能だった柔軟なフィルタ処理が行えなくなり、あらかじめvppに用意されているリサイズなどのシンプルなフィルタしか使えなくなるということがある。ただ、今回の透過性ロゴフィルタのように、カスタムvppフィルタを(面倒だけど)作ることで、QSVデコード→QSVエンコードの間に好きな処理を入れられることもわかった。(それなりに速度は落ちるけど…)
QSVEnc
・.NET Framework 4.5に移行。
あわせて簡易インストーラも.NET 4.5に移行。
・Windows10を正しく検出できるように。
実はわりといんちきな方法でごまかしている…
・qaacでのALACモードがmux出来なかったのを修正。
・設定画面のサイズが大きくなることがあったのを修正。
QSVEncC
・QSVでデコードし、デコードからエンコードまでを一貫してQSVで実行可能にした。
--avqsv
avcodec + QSV decoderを使用して読み込む。
入力解像度、入力fpsの設定が不要になる。
デコードからエンコードまでを一貫してQSVで行うため高速。
--avqsv-analyze <int>
libavが読み込み時に解析するファイルの時間を秒で指定。デフォルトは5。
音声トラックなどが正しく抽出されない場合、この値を大きくしてみてください(例:60)。
--audio-file [<int>?][<string>:]<string>
avqsvリーダー使用時のみ有効。
指定したパスに音声を抽出する。出力フォーマットは出力拡張子から自動的に決定する。
[<int>?] で、抽出する音声トラック(1,2,..)を指定できる。
--audio-file 2?"test_out2.aac" とすればtest_out2.aacにトラック番号#2を抽出する。
[<string>:] では、出力フォーマットを指定できる。
--audio-file 2?adts:"test_out2" とすれば、拡張子なしでもadtsフォーマットで出力可能。
--trim <int>:<int>[,<int>:<int>][,<int>:<int>]...
avqsvリーダー使用時のみ有効。指定した範囲のフレームのみをエンコードする。
--audio-copy [<int>[,<int>]...]
avqsvリーダー使用時のみ有効。音声をmuxしながら出力する。
特に何も指定しなければ、全ての音声ストリームがコピーされる。
--copy-audio 1,2 とすれば音声トラック1,2が抽出される。(トラック番号は、1,2,3...)
-f, --format <string>
muxerを使用して出力する。<string>には、出力フォーマットを指定することができる。指定しない場合は、出力拡張子から自動的に決定する。H.264/Elementary Streamで出力する場合には、"raw"を指定する。
・vppとして透過性ロゴフィルタを追加。
通常、複数のオプションを組み合わせて使用する。
例:
--vpp-delogo "logopack.ldp2" --vpp-delogo-select "TBS 1440x1080"
ロゴパックファイル "logopack.ldp2" からロゴ "TBS 1440x1080" を使用。
ロゴ消し処理自体はSSE4.1, AVX, AVX2を使ってCPUで実行している。もとのAviutl版同様、YC48-12bitで処理しているけど、QSVの色空間は基本的にNV12なので、色差成分はケチって4:2:0のまま処理している。また、最終的なフィルタの出力は8bitでしかないので、精度の点でいくつかの処理を端折って高速化している。
--vpp-delogo <string>
ロゴファイルを指定する。".lgd",".ldp",".ldp2"に対応。
--vpp-delogo-select <string>
ロゴパックの場合に、使用するロゴを以下のいずれかで指定する。
・ロゴ名(完全一致!)
・インデックス (1,2,...)
・自動選択用iniファイル
下記の書式に従って、入力ファイル名から自動的にロゴを選択する。
書式
[LOGO_AUTO_SELECT]
logo<連番数字>=<マッチパターン>,<リストに表示されているロゴ名(完全一致!)>
設定ファイルの例
[LOGO_AUTO_SELECT]
logo1= (NHK-G).,NHK総合 1440x1080
logo2= (NHK-E).,NHK-E 1440x1080
logo3= (MX).,TOKYO MX 1 1440x1080
logo4= (CTC).,チバテレビ 1440x1080
logo5= (NTV).,日本テレビ 1440x1080
logo6= (TBS).,TBS 1440x1088
logo7= (TX).,TV東京 50th 1440x1080
logo8= (CX).,フジテレビ 1440x1088
logo9= (BSP).,NHK BSP v3 1920x1080
logo10= (BS4).,BS日テレ 1920x1080
logo11= (BSA).,BS朝日 1920x1080
logo12= (BS-TBS).,BS-TBS 1920x1080
logo13= (BSJ).,BS Japan 1920x1080
logo14= (BS11).,BS11 1920x1080 v3
この場合、入力ファイル名が"響け!ユーフォニアム #13 「さよならコンクール」 (BS11).ts"なら、ロゴ名"BS11 1920x1080 v3"が使用される。
--vpp-delogo-pos <int>:<int>
1/4画素精度のロゴ位置の調整。Aviutlで言うところの <位置 X>:<位置 Y>。
--vpp-delogo-depth <int>
ロゴの透明度の補正。デフォルト128。Aviutlで言うところの <深度>。
--vpp-delogo-y <int>
--vpp-delogo-cb <int>
--vpp-delogo-cr <int>
ロゴの各色成分の補正。Aviutlで言うところの <Y>, <Cb>, <Cr>。
QSVEncC 2.00β12 → 2.01
変更点
・--mux-videoオプションを廃止。
raw(H.264/ES)出力の場合以外は自動的にmuxを試みるようになった。H.264/ESで出力する場合は、--format rawを指定するか、出力ファイル名を"拡張子なし" / ".264" / ".h264" / ".avc"などにしてください。
機能の追加。
・透過性ロゴフィルタの追加。
要望の反映。
・avqsvリーダーの標準入力("-")からの読み込みに対応。
例: QSVEncC.exe --avqsv -i - -o test.mp4 < "input.ts"
・muxしながら出力する際に、標準出力("-")に出力できるように。
・--format <string>で、muxしながら出力する際のフォーマットを指定可能に。指定しない場合は、拡張子から自動的に判断する。"raw"を指定することで従来通りH.264/ESで出力する。
パイプ関連はこんな形で大丈夫でしょうか…?
結局解析用のフレームは一度メモリ上においておいてまたあとで使うという、わりと適当な実装です。(そのぶんフレームレート推定はパイプでない時と同等です)
QSVデコードの機能制限
デコード対応コーデック
コーデック | 対応状況 |
---|---|
MPEG2 | ○ |
H.264/AVC | ○ |
H.265/HEVC | ○ (8bit) |
VC-1 | × |
VP8/VP9 | × |
その他制限 (対応予定なし)
・HEVCデコードにはHaswell以降のCPUと4080ドライバ以降が必要。
・Broadwellで可能なHEVC 10bitデコードが正常に動作しない問題。
・解像度が途中で切り替わるようなケースには非対応。
・途中で音声が増えるようなケースには非対応。
・VFRには非対応。
・MPEG2とかのRFFには対応できない(?)。
2015.07.05 20:30追記
QSVEnc 2.01→2.02
たびたび更新してすみません。
機能の追加
・avqsvリーダーもunicodeファイル名に対応。
バグの修正
・--vpp-delogo, --vpp-half-turnがavqsvリーダー使用時以外に使用できなかった問題を修正。
2015.07.05 23:15追記
QSVEnc 2.02→2.03
更新し過ぎでごめんなさい・・・
バグの修正
・ファイル名が出力側で文字化けする問題を修正。
2015.07.05 23:15追記
QSVEnc 2.03→2.04
バグの修正
プロファイルを選択すると落ちるのを修正。
QSVEnc ダウンロード>>
ダウンロード (ミラー) >>
OneDriveの調子がいまいちの時はミラー(dropbox)からどうぞ。同じものです。
QSVEncBenchmark.zipはベンチマーク用です。(220MBと重いので注意)。run_benchmark.batをダブルクリックで実行です(要 Avisynth + lsmashsource.dll)。
QSVEncCのオプションについてはこちら。
QSVEncCオプション一覧>
スポンサーサイト