FAWCheckについて

私が勝手にくっつけたFAWCheckなる機能について、どういうことをやってるのかちょっと詳しめな説明。

そもそもFakeAACWaveとは、AACをwavに偽装して、wavとして読み込んでカットしたりできるようにするもの。FAW.exeのGUIなし版がfawcl.exe。

たとえば、
aac -> [FAW.exe] -> 偽装wav -> [Aviutlでカット編集(CMカットとか)] -> カットされた偽装wav -> [FAW.exe] -> カットされたaac
のように使用し、音声をエンコードすることなくカット編集ができる。

(2011.01.04追記)
FAWには一般的な1/1サイズと、もうひとつ1/2サイズってのがあって、1/2サイズは16bitwavではなく、8bitwavで偽装されている。この1/2サイズを使う場合、Aviutl内部は16bitwavなので、16bit->8bit変換をしてやらなければならない。x264guiEx 0.12からこの16bit->8bit変換を行って1/2サイズFAWも扱えるようにした。(もっとも、0.12はバグ持ちなので使えるのは0.13からなるが)


偽装wavはAviutlで出力する際にはきちんとFAW.exeで処理する必要があるけども、たまに設定を間違えて、普通のwavをFAW.exeで処理しようとしてしまい止まったり、逆に偽装wavをneroでエンコードしてしまいおかしなことになったり、ということになってorz


そこで、音声の設定は常に普通のwav用のものにしておき、偽装wavのときには自動的にFAW.exe(fawcl.exe)を使用するようにできないか、と思ってFAWCheckを作ってみた。


・パスの指定
FAW.exe(fawcl.exe)のパスは、外部エンコーダのリストにあるものを使うので、FAWCheckをオンにするには、一度外部エンコーダのところのFAW.exe(fawcl.exe)のパスを正しく指定しておく。指定した後で、外部エンコーダの選択を普通のwavの時の設定(たとえばneroaacencとか)に戻しておく。一度指定してあればおk。


・ファイル出力時の動作
FAWCheckをオンにしておくと、音声のエンコードを開始する前に、まずFakeAACWave(偽装wav)かどうかの判定し、

偽装wavでない(普通のwavだ)、と判定された場合、guiの設定通りに音声エンコードを実行。
偽装wavである、と判定されたときは、guiで設定された音声エンコードの方法を無視して、FAW.exe(fawcl.exe)で音声を処理する。

というふうになる。

つぎに、どうやって判定しているかという話。 偽装wavであるという目印があるのかどうかはよくわからないので、(FAWの詳しい仕様は知らない)、FAWの作る偽装wavの特徴から判定。

音声データで、連続してゼロが続くところを「ゼロブロック」と呼ぶことにする。


普通のwav
nonFAWSample
普通のwavではゼロ自体が少なく、長いゼロブロックはなかなか登場しない。(上の図)




偽装wav
FAWsample
偽装wavの特徴は、波形で見ると、ある一定以上の長さのゼロブロックが周期的にたくさん登場すること。また、偽装wavではこのゼロブロックの長さがほぼ均一。さらに、ゼロブロックが多い結果、音声データ全体としてもゼロが非常に多い。




そこでまず、音声を少し読み取って、ゼロブロックの数と、そのゼロブロックの長さを取得する。ただし、偽装wavの特徴の「ある一定以上の長さのゼロブロック」を調べたいので、あまりに小さいゼロブロックは無視。

その結果で、判定。

・ゼロブロックが数が少なければ、偽装wavでない。(1フレームに一個分弱ぐらいはあるはず)
・ゼロブロックが多くても、ゼロの数が少なければ、偽装wavでない。(見つかったのは、なんか関係ないゼロブロックかもしんない)
・ゼロがあまりに多い場合は無音音声が考えられるので、これも偽装wavでない。
・ゼロブロックの大きさが不均一な場合、偽装wavでない。(見つかったのは、なんか関係ないゼロブロックかもしんない)


このようにして判定すると、残ったものは偽装wavらしい、ということがわかる。

これだけやれば、誤判定の可能性はほとんどない(と思う)。

スポンサーサイト

コメントの投稿

非公開コメント

No title

こんにちは。
FakeAACWaveのオプションで、FAWサイズを1/2にするオプションを
使用すると、エラーになって無音のMP4が出来ちゃうんですが、
回避方法はありますか?

ちなみに1/2の指定でエラーになったログが↓で

x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
x264 [info]: profile High, level 3.1
auo [info]: non-FAW : few zero blocks
audio [info]: using ext. audio encoder
audio [info]: using ext. muxer
mp4 [info]: audio muxing feature is disabled.

同じ物をサイズ1/1でやってエンコード成功したもののLogが↓です。

x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
x264 [info]: profile High, level 3.1
auo [info]: audio seems to be FAW
audio [info]: using ext. audio encoder
audio [info]: using internal muxer
audio [info]: using x264audio, acodec copy
audio [info]: lavf used as demuxer

3時間超の録画のものは、FAWサイズを1/2にしないとwavの2GBの
制限に引っかかってエラーになるので、何とかしたいです。
x264guiExの方なら大丈夫ですか?

Re: No title

いまのところ、x264gui(およびx264guiEx)では非対応とさせてください、すみません。

一応、手動で行うことはできるはずです。
Aviutlのwav出力で、48kHz, 8bit, Stereoでwav出力します。それをFAW(1/2モード)でaacに戻し、動画とmuxすればOK(のはず)です。

x264guiExでの対応は考えておきます、としか。明日も明後日も私事で忙しいので来年になります。

Re: No title

お返事ありがとうございます。
手動で一度試した時は、音ズレしたものが出来上がって
きたのですが、いま一度やり方を見なおしてみます。
気長にご対応をお待ちしておりますm(_ _)m

No title

x264guiEx 0.12から1/2サイズに対応しました。でも0.12はバグ持ちなので0.13をどうぞ。

re:No title

こんにちは。
先ほど0.13を試しまして、無事エラー無くMP4に出力できました。
これで長時間録画の際も気兼ねなく扱えます。
ご対応感謝いたします。ありがとうございました。
プロフィール

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