x264guiEx 2.05

更新
・VC++2013に移行
・音声エンコードディレイをカットする機能を追加
・簡易インストーラの誤字を修正 (「リンク取得リンク」→「リンク取得」)

x264guiEx.auoを手動で更新する際の注意点
開発をVC++2012からVC++2013に移行しました。そのためVC++2013 runtimeが必要です。setupフォルダ内のmsvcr120.dll / msvcp120.dllをAviutlフォルダにコピーしてください。


・auo_setup(簡易インストーラ)を使用する場合は問題ありません。(自動的にランタイムdllがコピーされます)




音声エンコードディレイをカットできるように。
・qaac (AAC-LC)では--no-delayオプションを使用。
・neroaacenc/qaac/qtaacencでは、「音声の削除」「映像の追加」などにより相殺できる機能を追加した。

DSC_0081



neroaacenc等でエンコードを行うと、音声側に一定の遅延が発生してしまう。(エンコーダの制限)

今回はこれを解消する機能を追加した。

このエンコードによる音声の遅延は、bitや周波数、チャンネルに関係なく一定らしく、

NeroAACEnc
AAC-LC= +2624 samples
HE-AAC= +4672 samples
HEv2=  +5616 samples

Apple AAC (qaac / qtaac)
AAC-LC=+2112 samples
HE-AAC=+5184 samples

のようだ。まあSamplingRateが48000Hzで2624sample程度なら 2624sample / 48000(sample/sec) = 55ms程度なのでたいしたことはないのだけど、例えばSamplingRateが24kHzとか、あるいはHE-AACとかで遅延が大きくなってくいると音声が遅れているのが結構気になってくるかもしれない。



まず、最近のqaacのAAC-LCではエンコーダ側で対策してくれるようになっているので、今回からそのオプションを使うようにした(--no-delay)。
muken様にコメントを頂きましたように、--no-delayを使用すると最初の1024sampleが無音でない場合に先頭にノイズが入る場合があり、注意が必要です。

AACが音声フレーム(音声1フレーム=1024sample)をまたがって圧縮しており、本来であれば一つ前のフレームが存在するか、あるいは無音でないと正しくデコードできない事によるものです。

そこでx265guiEx 2.05v2では、qaacのAAC-LCについても「音声カット」「映像追加」のどちらかによる補正を選択できるようにしました。




今回、音声の遅れを打ち消すため、

(1). 先頭の音声を削除
(2). 映像を先頭に追加

のどちらかにより音声の遅れを打ち消す機能を追加した。方法が異なるだけで、どちらの方法でも音声の遅れを解消できる。

注意点としては、それぞれ副作用があって

(1) 先頭の音声を削除 → 動画の先頭の音が遅れのぶん(60~120ms)強制的に無音になってしまう

(2) 映像を先頭に追加 → 2~4フレーム程度映像が先頭に追加される

ということ。これは(edts等のmp4コンテナの機能を使わずに)ディレイを修正する上で仕方ないと思う。動画の先頭 60~120msがもともと無音であれば、(1)で問題ないだと思うのだけど、動画開始直後から音がある場合には(1)だとその音が消えてしまうため、(2)のほうを選んでくれたほうがいいかなと。



一応検証結果を。

検証方法

まずそれぞれの設定でエンコード。

オリジナルのwavをAviutlのwav出力から16bitモノラルで出力。

また、エンコードしたmp4をlwinput.auiでAviutlに読み込み、同様にAviutlのwav出力から16bitモノラルで出力。

で、このwavファイルをAudacityに放り込んで波形を確認した。

DSC_0081

「オリジナル」の波形に対して、例えば「Nero AAC-LC」は少し波形に遅延が見られるが、2624sample分の遅れを補正した「Nero AAC-LC -2624s」では波形が「オリジナル」と揃っていることがわかる。その他のケースでも補正によって音声の遅延を相殺できていると思う。

…さて、問題はニコ動向けプロファイルとかでディレイカットをデフォルトにするかどうか…(いまは「補正なし」)。どうしよ。



※2014.03.15 18:07
x264guiEx 2.05v2、iniファイルの更新です。

・2.05にmp4box用の設定ファイルを入れ忘れていたのを修正
・qaacのAAC-LCについても--no-delayでなく、2112sample補正するか選べる形にした。



※エンコードディレイカット機能の使用にはx264guiEx.iniの更新も必要です。
ダウンロード>>
ダウンロード (ミラー) >>
Skydriveの調子がいまいちの時はミラー(dropbox)からどうぞ。同じものです。

x264guiExの導入>



その他…

1.
いつの間にかこのブログのカウンタが100万いってます…。見に来てくれた皆さん、ありがとうございます。

2.
x264afs、r2409+873に更新しました。


スポンサーサイト

コメントの投稿

非公開コメント

No title

この記事、pre-rollのこと書いてないけど。
--no-delayでも危険な場合があることを言及した方がいいよ。

MDCTってフレーム間オーバーラップして符号してるから、最初のフレームによる出力はいつだって不完全。
なわけで、最初のフレームに無音以外のものが入っちゃうと、これ、不完全に復号されたものとしてデコーダが出しちゃうのよね。
結果、ノイズになる。
だから、--no-delayが安全に使えるのは最初の音声1フレーム内に音が入ってない場合。

結構、カットする際とかにpre-rollを考えない処理系多いけど、意識しようぜ。

あと、AACは1フレームpre-rollしか聞いたこと無いけど、圧縮規格によってはそれより多く必要とする場合あるんで。

pre-rollの関係で少なくとも音声1フレーム分はencoder delay欲しいよ。

mp4box用のiniファイル

お世話になっています。

今回の更新ファイルにはmp4box用のiniファイルが同梱されていませんが、
mp4boxとそれ以外とでiniファイルの区別はなくなったのでしょうか?

mp4boxを使用する場合でもauoフォルダ内のiniファイルの適用で問題ないですか?

No title

2.05でエンコードを行うとmuxに失敗してしまい、無音の動画ファイルとm4aファイルが生成されます。
2.04v4に戻したところ正常にエンコードできたのですが…

No title

>muken様
ご指摘ありがとうございます。たしかにpre-rollにより--no-delayでノイズが発生する可能性があることを考慮するべきですね。

記事等、修正しました。

>seyron様
mp4box用ini更新しなきゃ…と思っていたのに、入れ忘れてました…。申し訳ありません。2.05v2でmp4box用も追加しておきましたので、そちらを使っていただければと思います。

>anoni様
mp4boxを使ってらっしゃるのでしたら2.05v2のmp4box用iniで解決するかと思います。
そうでないとするとmuxがうまく行われていない、ということなのだと思いますが、ログにはどのようなメッセージが出ているのか教えていただけないでしょうか?

No title

ありがとうございます。
2.05v2をインストールすることで無事、muxすることができました。
エラーログの件ですが、2.05に戻しどのようなエラーログが出ていたか確認しようとしたのですが、再度エラーが起きることはありませんでした。
確か赤い文字で↓のようなエラーが表示されていたと思います。
> mux後ファイルが見つかりませんでした
> mp4boxでのmuxに失敗しました。

Re: No title

うまく行って良かったです。mp4box用のiniファイルでなかったことが原因だと思います。

mp4box用を配布せず、混乱させてしまいすみませんでした。

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: No title

自動フィールドシフト + 音声ディレイカット「映像追加」、たしかに失敗します。原因はおっしゃるとおり、タイムコードが映像追加を考慮できていないためです。すみません…。

現在修正のためコード書いていますので、もうしばらくお待ちください。

拡張子の方も考えてみます。

試しに

音声の設定をLAME mp3のABR160Kでエンコードしてみました
WAV出力の結果とエンコしたmp4を読み込んでのWAV出力の結果を確認したら
これも0.05秒程度遅延が発生しているようです
30fpsで1.5フレームくらいでしょうか
動画再生で確認しても今一認識できません
たぶん台詞の部分で確認していないからだと思います
もしかして圧縮規格に合わせて自動的に遅延が入ってるなんて事は無いのかな

Re: 試しに

今回はオーディオディレイカット機能をつけたのは、neroAACEnc/qaac/qtaacだけなのですが、LameやAC3など、他の多くのエンコーダでもやはりオーディオディレイは入るはずです。(逆に可逆圧縮系は入らないと思います)

オーディオディレイ量はわからない場合には結局波形を合わせてみるしかないところがつらいです。(AAC系はいろんな方が調べてくださっており、その値を使って波形を確認すればよかったので楽でした。)

No title

qtaacenc/qaacのTVBR圧縮選択時にエンコーダディレイカットのプルダウンが表示されないのは自分だけ?意図して表示されないのでしょうか?2.14使用中です。
Neroの品質ベースはプルダウン表示されるから気になってる。

Re: No title

現状は表示されていません。

単純にiniにディレイカットの設定を書いていないのです…
プロフィール

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