AACエンコーダディレイとx264guiExでの対処方法について

音ズレについて再調査したので、いい機会なのでまとめてみた。

AACエンコーダは一般に2つのフレームで完全な音を出すデータを保持するため、最初の音声フレームからは完全な音を出すことができず、この問題を解消するため、最初に無音のフレームを挿入する。この無音区間で生じる遅延がencoder delayで、そのままでは映像との同期がずれる(音ずれ)原因となりうる。このAACのencoder delayについてはこちらが非常に詳しい。

x264guiExではL-SMASH muxerにお世話になり、その機能を活用するなどして、このディレイカットにx264guiEx 2.05から対応している。

結論から言うと、現在のx264guiExでデフォルトの「AAC (ffmpeg)」エンコーダを使用して出力した場合、edit listの情報によるディレイカットがなされるため、encoder delayは補正され、(encoder delayが原因で)音ずれすることはない。



多くの方はAACエンコーダのディレイについてはご存じと思うが、このあたりのx264guiExでの対応方法をまとめたものがなかったと思うので、今回まとめてみた。
スポンサーサイト



x264guiEx 3.14

- qaac/fdkaacのコマンドラインに --gapless-mode 2 を追加。
qaacのm4a出力でedtsによるencoder delay打消しが適用され、ディレイカット「補正なし」でも「edts」相当の出力が可能に。

- x264guiEx 3.06から音声エンコーダffmpeg(AAC)使用時にディレイカットの「音声カット」「映像追加」が意図した動作にならない場合があったのを修正。
- 中国語翻訳の修正。
- そのほか多くのコード整理を実施。



※x264guiEx 3.00から導入方法が変更されていますのでご注意ください。

ダウンロード>>

x264guiEx 3.xxの導入方法
x264guiExのエラーと対処方法


Arc A380でのIntel Deep Link (Hyper Encode) の効果

QSVEnc 7.08の更新で、Intel Deep Link によるHyper EncodeがQSVEncでも使用可能になったので、今回は実際にその効果を確認してみる。

QSV画質比較(2022.08)のお詫びと訂正

この前Arc A380を使用したときのQSVの画質比較記事を上げましたが、その際QSVエンコード時の速度比較を行っていたところで、Arc A380の速度を過小評価してしまっていたので、記事中のグラフを訂正しました。

画質については変化ありません。(速度のみを訂正しました)

Intel Arc A380のQSV画質比較 (2022.08) 実写編
Intel Arc A380のQSV画質比較 (2022.08) アニメ編

A380の速度について過小評価した結果となっており、申し訳ありません。

AMD環境でArc A380の動作を確認

Intel自身が現時点でDX9/DX11向け最適化がまだ足りていないことを認めてしまったIntel Arc GPUだが、国内でもArc A380の発売が予告されるなど、やっと国内発売が近づいているようだ。

そもそもIntel Arcシリーズは、Intelの(最近の)dGPUとしては正確には2世代目で、Iris Xe搭載のDG1なるGPUがあった。このDG1、初代だったためか(?)Intel環境でしか動かないという話だった。(実際どうだったのかはよくわからない)

2世代目となるIntel Arcシリーズについては、こうした問題は特にないよう。コメントいただいたので実際に確認してみたが、Ryzen9 5950Xの環境にArc A380を搭載しても、普通にドライバをインストールすれば特に問題なく動作した。

こんな感じで、CPUに5950X、GPUがArc A380でAV1エンコードできている。

qsvnecc_5950x_20220811.png

VCEEnc 7.03

English version of changelog>>

ベースとなるAMF SDKを更新し、追加された新しいオプションに対応。

- AMF 1.4.26に対応。
AMD Radeon Software Adrenalin Edition 22.7.1 以降が必要。

- --pa に新たなオプションを追加。
taq, paq, ltr, lookahead, motion-quality

- H.264エンコードに --vbrhq, --cbrhq を追加。

- downmix時に音量が小さくなってしまうのを回避。



※Aviutl向けには、Aviutl_VCEEnc_x.xx.zipをダウンロードしてください。
ダウンロード>>

VCEEnc 7.xxの導入方法

VCEEncCオプション一覧>>


NVEnc 6.07

English change log and binaries>>

[NVEncC]
- downmix時に音量が小さくなってしまうのを回避。
コメントのあった問題の回避。

[NVEnc.auo]
- NVENCが利用できない場合でも「NVENCが利用可能か確認 [ダブルクリック].bat」だと利用できることになっていたのを修正。
ご指摘いただいた問題の修正。



※NVEnc 6.00から導入方法が変更されていますのでご注意ください。
※Aviutl向けには、Aviutl_NVEnc_6.xx.zip をダウンロードしてください。
ダウンロード>>

NVEncの導入

NVEncCのオプションについてはこちら。
NVEncCオプション一覧>


Intel Deep Link (Hyper Mode) の使い方と制約

HyperMode (Intel Deep Link)は、Arc GPUと内臓GPUのエンコーダを連携させて、エンコードの高速化を狙う機能とされている。

実際に、こんな感じで"--hyper-mode on"付きのエンコードで、GPU0(内臓GPU)とGPU3(Arc A380 GPU)の両方に負荷がかかっているのが確認できた。



QSVEnc 7.08では、「利用可能な場合」「自動的に」有効になるが、いろいろ制約があってこのままだとわりと発動しない場合のほうが多いと思う。

これは、現時点で確認できているものでも、HyperModeの使用にはいろいろな制約があるためだ。

QSVEnc 7.08

Intel Deep Link (HyperMode)を使用できるようにする修正と、--hyper-mode on の時になるべくHyperModeが使用できるようパラメータ調整を自動で行うように。HyperModeについてはこのあとの記事で使用方法とかをまとめたいと思う。

[QSVEncC]
- HyperModeの検出を修正。
- --hyper-mode on の時になるべくHyperModeが使用できるようパラメータ調整を行うように。
- Bフレームのチェックを追加。
- --check-featuresを拡張し、--fixed-func有効時(FF)と無効時(PG)の時の双方を別々にチェックするように。
- --check-features, --check-environmentが--deviceで指定するデバイスで情報を取得できるように。
- --async-depthの制限を解放。

[QSVEnc.auo]
- HyperModeの設定欄を追加。
- デバイス選択欄を追加。
こんな感じで実行するGPUを選択。

qsvenc_auo_20220807.png



※Aviutl向けには、Aviutl_QSVEnc_7.xx.zip をダウンロードしてください。
QSVEnc ダウンロード>>

QSVEncの導入

QSVEncCのオプションについてはこちら。
QSVEncCオプション一覧>


Intel Arc A380のQSV画質比較 (2022.08) アニメ編

※2022.08.11 22:15: Arc A380のエンコード速度について初出時には過小評価しており、修正を行いました。画質については、変更ありません。

今度はアニメ版。

実写版の繰り返しだが、現時点のoneVPLではあまりAV1関連パラメータは指定できないので、今後のAPIの整備やドライバの更新等により、AV1 HWエンコードについては今後状況は変化しうるので注意。まずは現時点での性能、ということで。

テストは、2月に行ったテストと同じものなので、Intel Arc A380以外については、2月の結果を流用している。

また、Arc A380については、3259 Betaドライバ(2022/7/29) を使用した。通常版のドライバは30.0.101.1743(2022/7/6)だが、このドライバではQSVがCQPモード以外まともに動かないので、QSVをしたい場合は現状3259ドライバを入れたほうがいいと思う。

プロフィール

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単体はこちら>

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向けも同梱

○その他
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