実験: Aviutlでカット編集だけしてQSVEncCのavqsv使用

Aviutlでカット編集だけしてQSVEncCのavqsv使用…とか書くと、いったい何の話だ、という感じだけど、それを実験してみた。

とりあえず、Aviutlでカット編集だけして、あとはQSVでデコードからエンコードまで一括で行える。

実験概要



QSVEnc.auoを使えば、AviutlからQSVを使ってエンコードできるのだけど、QSVEncCでエンコードするときよりだいぶ遅い、という問題がある。

まあ、QSVEncCと違ってデコードをCPUで行い、Aviutlのフィルタパイプラインを通るので、余分な処理が多くなっていて、どうしようもなく遅くなってしまうのだと思う。Aviutlが動画編集のためのソフトウェアであることを考えると、まあ、当たり前だろう。

ところが、AviutlでQSVEnc.auoを使う場合であっても、速度を重視する場合には、フィルタなどを全くかけず、カット編集だけしてエンコードしている場合も、まあ、きっとあるのではないかと思う。この場合、QSVEncCのavqsvを使えば高速化できるのだけど、カット編集したいからAviutlを使っていることになる。

じゃあ、Aviutlでカット編集しつつ、QSVEncCのavqsvを使って高速化できないのか、という実験。

結構インチキ臭いことになって、制約もいろいろつくけど、その代わり結構速くなった。



準備



1. こちらから実験用のzipをダウンロードする。


2. Aviutlのpluginフォルダにzipファイル内の以下のファイルをコピーする。
QSVEnc.auo
QSVEnc.ini
AuoLink.auf [ AuoLinkフォルダ内 ]


3.Aviutlフォルダにzipファイル内の以下のファイルをコピーする。
[ "QSVEncC\x86" フォルダ内 ]
avcodec-57.dll
avformat-57.dll
avutil-55.dll
swresample-2.dll


4.Aviutlを起動して、lwinput.auiで動画を読み込み、カット編集する。


5.AuoLinkフィルタを有効にする。
これで、QSVEnc.auoからavqsvが利用可能になる。入力ファイルの情報と、カット編集の情報がQSVEnc.auoに渡されるようになる。
QSVEnc_avqsv_05s.png


6. 普通にAviutlからQSV出力画面を開く。
AuoLinkフィルタが有効になっていると、AuoLinkモードに移行して、設定画面が少し変化する。

「avqsvで直接エンコードを行う」にチェックを入れる。

QSVEnc_avqsv_04.png


7. エンコード開始
avqsvが対応している入力ファイルなら、avqsvを使用して高速にエンコードされる。



注意



変則的な動作になるため、あまりに多くの制限が発生します。まとめるとQSVEncCでできることしかできません。

・Aviutlのフィルタをスキップするので、Aviutl側のインタレ解除・フィルタ類の設定は反映されません。

・512個以上のカット編集には対応していません。可変長で領域とるのはめんどくさいのです。

・tsなどでカット編集の同期がとれるのはlwinput.auiだけです。例えば、m2v.auiを使うとずれました。これは先頭のフレームをどのフレームにするかが異なるためです。mpgとかmp4とかの先頭がきれいなやつは大丈夫なはずです。

・avqsvのfps判定とAviutlの入力プラグインのfps判定が異なる場合、カット編集の位置がずれます。

・avqsvにより読み込めないファイルはエンコードできません。

・追加読み込みなどでソースファイルが複数存在する場合は使用できません。

・音声を別ファイルから読み込んでいる場合、それは反映されません。

・入力がRFFやVFRなどの場合には対応していません。盛大に音ズレしましすし、カット編集した場合に盛大にずれます。

・QSVEnc.auoの音声エンコードやmux関連機能(チャプター読み込みなども)も使用できません。



結果



環境
Win8.1 x64
Core i7 6700K 4C/8T @ 4.2GHz <Skylake>
DDR4-3200 2ch 16GB
Intel HD Grpahics 530 (Intel 4312ドライバ)
Aviutl 1.00
QSVEnc 2.23 実験版
lwinput.aui rev 820

入力
MPEG2 ts 1920x1080i 29.97fps

出力
CQP=22:26:29, インタレ保持, 品質 = 6 (faster)



通常の出力 = 92fps
QSVEnc_avqsv_01.png

通常のAviutl出力。まあ、そんなに速くない。



avqsv使用 = 200fps
QSVEnc_avqsv_02.png

Aviutlの過程をすっ飛ばしているので、それなりに速くなっている。



というわけで、Aviutlでカット編集をしつつ、avqsvで高速にエンコードできた。ついでにAviutlのバッチ登録機能が使えるので、Aviutlにエンコジョブ管理をしてもらうこともできるという利点もあるかもしれない。

というかまあ、本来はこういうのはエクスポートプラグインにするのだけど、なんで無理矢理出力プラグインとして作ったかというと、エクスポートプラグインはバッチ登録できないから。こういうちょっとでも時間のかかる出力にはエクスポートプラグインはあまり実用的じゃない。



今後



あまりにややこしい制約事項が多すぎて、わかりにくいので、今後もQSVEnc.auoにこの機能を入れるかは迷っています。

まあやってみて面白かったけど、そもそも需要あるんかな?

というところです…



実験用のzip


スポンサーサイト

コメントの投稿

非公開コメント

No title

あ、あの・・ Handbrake CLIのフロントエンドをこれを流用して作ることは難しのでしょうか?

ただただHandbrakeの自動VFR化が魅力という一事なんですが・・

「 音声 エンコーダ copy 」機能を通常版にも欲しくなりました

この AuoLink テスト版のオーディオ処理に備わっている
「 音声 エンコーダ copy 」が便利だったので
QSVEncC.exe でしか実行できない機能なのかもしれませんが
通常版 QSVEnc.auo 次回以降のアップデートに
同機能を盛り込めないものでしょうか。

【 使用してみての感想 】
AuoLink テスト版では AviUtl 側でのフィルタ処理などが一切無視されるとのことなので リサイズ インターレース解除 など必要な処理を QSV 側で行わせてみたのですが、
実際にエンコードが開始されるまでに ( = ログウィンドウのタイトルバーに処理フレームレートなどが表示されるまでに ) かなりの間が空いてしまうのは、エンコードに入る前に リサイズ や インターレース解除 のための事前処理を何かしら行っているということなのでしょうか。
( 正確にカウントはしていませんが、少なくとも30秒以上はログが進んでいなかったように思います )

No title

>HandBrakeのフロントエンド
流用というかまあ、一から作るレベルになりそうで…

あとはHandBrakeの読み込み方法がわからないので、カット編集の同期もずれそうななので、難しそうです。

> regnar様
感想ありがとうございます!

・音声エンコーダcopy
おっしゃるようにQSVEncC.exeのavqsv限定の機能を使っているので、通常のエンコード系統に入れるのは…簡単ではなさそうです。たしかに音声をエンコードしなくてよくなるので、できるとかなり便利なのですが。tsみたいに、ファイルの始点で映像と音声がもともとずれているようなフォーマットだと、現状の実装ではavqsvのように同時に処理しないとカット編集の同期がとれないのです。

実装方法考えてみますが、あまりさくっとはできなさそうです。


・実際にエンコードが開始されるまでにかなりの間が空いてしまう

エンコードが開始されるまで間があるのは、デコードの初期化関係が結構重いためですが…30秒ですか…。そんなにかかっているとは思っていませんでした。うちでは5秒ぐらい…でしょうか。

うーん。

No title

音声 エンコーダ copy

> QSVEncC.exeのavqsv限定の機能を使っているので、通常のエンコード系統に入れるのは…簡単ではなさそうです。

やっぱりそうですよね (^_^;


エンコード開始までにかなり間が空いてしまう

あくまで リサイズ処理 と インターレース解除処理 を QSV 側で行うようにしたときに ログ窓タイトル への FPS 表示開始まで間が空いたというだけなので、リサイズ や インターレース解除 を QSV で行わず、AviUtl 側での カット編集のみ の状態であれば、すぐさまエンコードが始まります。

「 こんなことしてみたら、これこれこういった挙動になった 」 という報告だと思って頂ければと思います。


処理速度

こちらの環境でも 1080p ソースのエンコード速度が通常版 QSVEnc.auo でエンコードを行った場合の2倍に達していたので、AuoLink テスト版が意図するところの 「 AviUtl でカット編集しつつ QSVEnc.auo 経由出力での速度向上 」 という趣向を体感することができました。

Re: No title

詳細に報告いただき、ありがとうございます。

「音声 エンコーダ copy」はあると便利な機能だと思うので、なにか方法がないか、考えてみたいと思います。

開始時にエラー

qsv [error]: Input: Trim is only supported with transcoding (avqsv reader).
auo [error]: undeveloped feature.

エンコードを開始すると上記のエラーメッセージが出るのですが、どういう場合に発生するのでしょうか?

Re: 開始時にエラー

入力ファイル次第なところもあり、状況がよくわからないのですが、QSVEnc 2.24で改善しているかもしれません。
http://rigaya34589.blog135.fc2.com/blog-entry-716.html
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先(@を半角にしてください!)
rigaya34589@live.jp
github

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutlプラグイン
x264guiEx 2.xx (ミラー)
- x264を使用したH264出力
- x264guiExの導入>
- x264.exeはこちら>

x265guiEx (ミラー)
- x265を使用したH.265/HEVC出力
- x265.exeはこちら>

QSVEnc + QSVEncC (ミラー)
- QuickSyncVideoによるH264出力
- QSVEncCはコマンドライン版
- QSVEncC 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC (ミラー)
- NVIDIAのNVEncによるH264出力
- NVEncCオプション一覧>

VCEEnc + VCEEncC (ミラー)
- AMDのVCEによるH.264出力

ffmpegOut (ミラー)
- ffmpeg/avconvを使用した出力

自動フィールドシフト (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: aji様

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: まじぽか太郎様

PMD_MT (ミラー)
- SSE2~FMA3による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
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 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR