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<連番数字>=<マッチパターン>,<リストに表示されているロゴ名(完全一致!)>

設定ファイルの例

[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オプション一覧>


スポンサーサイト



コメントの投稿

非公開コメント

No title

QSCEncC.exeを2.0β11→2.01にしたら以下のエラーが出るようになりました。

avcodec writer: faild to open audio output file.
QSVEncC.exe finished with error!

コマンドライン
--avqsv --cqp 19 -i %1 -o "%~n1.264" --audio-file "%~n1.aac" --tff --vpp-deinterlace Normal --sar 1:1
入力ファイル:MPEG2 TS
環境:Windows7 64bit+i7 2600K

2.0β11では普通にバッチ処理が出来ていたのですが。コマンドラインの使い方が変わったのでしょうか?

宜しくお願いします。

No title

うまく動かないとのことですみません。

コマンドラインはご使用のもので問題ありません。

実際に、教えていただいたコマンドラインをバッチファイルにしてこちらでもtsを対象に実行してみましたが、こちら(Win8.1 x64 + 4770K)では問題なく動作しました。

ごめんなさい、よくわかりません…

No title

2.0β12を飛ばしていたので、β12に戻してみた所、普通にエンコード出来ました。

とりあえずは2.0β12を使用させて頂きます。

No title

Windows7 64bit i5 2410M
2.02で、コマンドプロンプトから日本語ファイル名のファイルを変換すると出力ファイル名が化けました。2.01では化けませんでした。
QSVEncC.exe --copy-audio -i 日本語ファイル名mpeg2.mpg -o 日本語ファイル名.mp4

Re: No title

報告ありがとうございます…おっしゃるとおりです。お恥ずかしいミスです…

修正しました。

No title

パイプ関連の対応ありがとうございました。
呼び出す側も結構修正が必要でまだ完全にはなってませんが、ひとまず手動での呼び出しで問題なくいけるのを確認しました。

割とビットレートが言う事を聞いてくれなくて苦労してますが、設定を詰めてこうと思います。

No title

2.03を試してみましたが、やはり同様のエラー「
avcodec writer: faild to open audio output file. 」でだめでした。入力ファイル名を「1.ts」とかにしてみましたが、変わらず。

--audio-fileオプションを消せば動きます。
--avqsv-analyze 60を指定しても変わらず。入力tsの音声は真空波動研では「AAC 48.00KHz 2.0ch(2/0 L+R LC) 144.00kb/s」でした。

Win7 64bit+i7 2600Kで同様な方は居ませんでしょうか?

プロファイルを選択すると落ちます

自分の環境だけかもしれませんが、
QSVEncのプロファイルを選択すると落ちます。

スクショはVer 2.01のものですが、2.03でも発生しました。
https://pbs.twimg.com/media/CJI1cw-UwAA1ZW8.png:orig

auo_conf.cppのguiEx_config::load_qsvp_conf()内のfree()で
ヒープ破壊が起きているようです。(厳密には、発覚した感じ?)
https://pbs.twimg.com/media/CJOvkRkUcAABOv3.png:orig

ちなみに、
callocで確保するサイズを増やしてみたら、落ちなくなりました。

Re: プロファイルを選択すると落ちます

ありがとうございます。2.04で修正しました。

No title

Win 8.1 x64 + 4770ですけど、かずなりさんと同じエラーが出ました。

「QSVEncC64.exe -i "なんだら.ts" --audio-file "かんだら.aac" -o "なんとか.264"」だけでも
「avcodec writer: failed to open output file.
QSVEncC.exe finished with error!」
が出ます。

--copy-audioを指定したら、こんなエラーがでます:
「QSVEncC64.exe -i "なんだら.ts" --audio-file "かんだら.aac" --copy-audio 1 -f raw -o "なんとか.264"」
「Audio track #1 is already set to be muxed, so cannot be extracted to file.
QSVEncC.exe finished with error!」

どうやら--audio-fileで音声を抽出する際だけの問題で、内蔵muxerを使用すると問題なくエンコも音声込みのmp4出力もできます。自動mux判定のミスじゃないかと思います。

Re: No title

最初のエラーの方は謎です…こちらでは全く同じコマンドを実行しても問題なく動作しています。現在、原因を探るためのコードを書いています。

「書き込み用のファイルが開けない」というエラーなので…難しいです。

2つ目のエラーは、期待される動作です。1つの音声トラックは同時にmux(--copy-audio)とファイルへの抽出(--audio-file)が行えないため、エラーを出しており、正常な動作となります。
プロフィール

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