てくてく とことこ

15/12/18にアメブロから引っ越してきました。書評・時事ネタ(政治・社会問題)で書いていく予定です。左でも右でもなくド真ん中を行く極中主義者です。基本長いので長文が無理な方はお気をつけを

Aviutlの音声エラー、始めに「ブッ」「プツ」と異音が入るエラーの対処

 Aviutlというフリーソフトで動画のエンコードの話。PC知識がない人間が書いているので、そういう知見がある文章ではないので参考になさる方は注意してください。あくまで個人的な感想・メモ書きです。正しいかどうかはわかりません。

(※追記、この文はPCが限界来る前に書いたもので、PC買い替えてから全くこの類のエラーは起こらなくなりました。他のアプリを起動していても音声エラーが起こるケースは今のところ皆無です。PCのスペックの問題のほうが大きいのかもしれません。無理せず面倒なことをあれこれやるより、さっさとCPU・メモリ・グラボなど良いものに買い替えたほうが早いかと思います。)

 AviutlというかNeroaacEncの話になるんでしょうかね?普段こんな話をしないんですけどね。対処法について一応メモ書きを。詳しい知識もないですし、あってるかどうかわからないので。ひょっとしたら間違ってるかもしれませんが、どなたかが目にして、正しい知識を教えてくれる可能性もあるので、まあ書いておこうかと。そんなに頻繁にエンコードをするわけでもないのですぐ忘れるんですよね。実際1年ぶりくらいに動画エンコードしましたからね。

 Aviutlで結構有名なエラーだと思うのですが、動画をエンコードをすると、音がおかしいことがある。再生したら、「ブツ」とか、「プチッ」とか「ブチッ」とか最初に変な音が入ることがあるんですね。んで、ググるとSoundEngineというフリーソフトで、音声を無音化しましょうという答えが出てきました。
 以前一度このSoundEngineでこの手の異音を消した覚えがあるのですが、どうだったか忘れました。WAV出力して、それをもう一度Aviutlに入れてac3にして、Yambで動画と音声を結合するというステップを踏むのが面倒くさい。どうにかならないか?といろいろ奮闘しました。んでなかなかうまく行かなかったので、その奮闘記録を一応残しておこうとね。同じような思いをした人は何人もいると思うので、ひょっとしたら誰かがググッて見に来て参考になるかもしれないので。

 ①SoundEngineが面倒くさいので、違うフリーソフトを試す。Audacityというのがあったのでやってみる。無音化をするまでがわかりにくい。まあそれはいいとして、なんとか無音化は出来た。が、やはりサイズ・容量を変えずに出力ができない。再変換して出力するので、結局またAviutlでリサイズしないといけない。無駄・手間があるので、即削除。

 ②SoundEngineを大人しくやることにする。最新のv5.20だとac3入力・出力がうまくできないので、旧バージョンv4.40だったか?まあそれくらいの古いものをインストールして、コマンドラインにac3入力・出力をするスクリプトが書いてあるので、それを入れる。
 ac3入力・出力ができるが、前述のようにリサイズが必要。結局面倒くさいのでやはりSoundEngineを日常的に使用するのはパス(以下に書くのは、SoundEngineが手間だと感じるので、Aviutlでなんとかしようという話。手間だと感じない。無音化&再エンコで別にいいよという人には無意味な話が続くので注意)。

 ③で、最初に「プッ」音が入るエラーをもう予め想定しておいて、元々動画と音声のエンコードは別々にやっているのだが、音声だけ失敗することを念頭に置いといて、そうなったら何回もやり直すという基本に立ち返る方法がある。エラーが出る→何らかのフリーソフトで先頭部分の無音化ーというステップが面倒くさいと言えるのは、Aviutlに読み込み→指定範囲カット→出力…の手順を踏んだほうが慣れている分楽だから。
 動画をエンコードする際、指定範囲をメモって、今度は音声をエンコードするというパターンで毎回やっているが、スペックが悪いせいか、経年劣化でスピードが遅くなってきたせいか、音声エラーがよくある。他に作業しながらだったり、動画を見ながらエンコードをした場合、音声が割れてしまったりすることがある。全部ダメになるならともかく、一部だけ音が割れたりするので、気をつけてチェックしないとわからないことがあるのでチェックのために、一度動画を見ながら音声を聞かないといけない。動画の出力が失敗することはまずないので、実際は音だけ聞けばいいのだけども。まあそういう音声エラーが起こりうるので、音声だけはそんなにエンコードの時間もかからないので、離席するときに他の作業をしないでAviutl以外起動させないで、エンコードをすることにしている。

 ④話を戻して、そのほかの作業をしないでエンコードをすれば、まあ大抵音声エラー・音割れは起こらないが、冒頭の「ビッ」というエラーだけは起こる。その対策をする必要がある。音声はパイプ処理でいつもやるのだが、指定範囲同じままで2passにしてエンコードをしてみる。それで解決するなら、まあ、当然そういうことがググッてすぐ出るわけで、当然直らずにやはり異音が出る。

 ⑤個人的に7割・8割くらい解消された方法が、指定範囲のフレームをずらしてエンコをすること。音声の最初のエラーなのに、1フレームでもいいから最後のフレームの範囲を変える(最初の方は変えづらいことが多いので最後の方をいじる。最初の方をいじれるのなら、最初の方をいじったほうが良いと思われる)。仮に1~50000だとするならば、50000ではなく49999や50001などに指定フレームを変えてみる。これで冒頭の異音がなくなることがあるので、最後のフレームをいくつも変えて出力してみる。

 ⑥それでも異音が出ることがあって、試しに最初のフレーム指定、前の部分カット。最後のフレーム指定、後ろの部分カットといういつもの手順ではなく、後ろからフレーム指定をして、次に最初のフレーム指定をするという逆でやってみる。すると何故か異音がなくなったというケースが一度あった。異音ブチブチの実例がまだ少ないので、今後再度出てきたら試して有効性がどのくらいあるか、追記して報告するつもり。

 ⑦で、今回一番オススメというか、いちおう記事化しておこうかなと思う良いやり方というのは、音声の位置調整フィルタを使う方法*1。音ズレを直すためのフィルタということなので、最大三十秒ほどしか使えないのだが、これを使えば冒頭の異音をフレームカットして、ズレた分を補正すればうまくやれるのではないか?と思ったので試してみた。
 音ズレを直すためのフィルタなのだから、元動画に対して、音声がズレて出力されると思っていたのだが、このフィルタを使うと、何故か前後三十秒がカットして出力される。「設定」で「音声の位置調整の設定」を選ぶと-999から+999まで選択できる。-999にして出力すると冒頭の三十秒位の音声がカットされる。+999にすると最後の三十秒が出力されずに無音になる。*2
 この機能を利用して、エラーが有る「ブツッ」のところをカット出来る。「表示」のところの「オーディオ波形の表示」という部分をチェックして、異音がどのくらい入っているか確認する。大抵最初の5フレームくらいなので「音声の位置調整の設定」-5にする。そうしてエンコードすれば、冒頭の異音は消える。もちろん各自-2でも、-10でもいじってもらって構わない。-5以下にすると、無音化しきれない可能性があるのであまり小さくするのはおすすめしない。-10くらいにして確実にするのが良いのではないだろうか?いちいちこの動画は‐3だとか設定をいじるのが面倒くさいので‐5で固定している。‐5で処理しきれなかったことがないので、まあ‐5でいいと思う。*3 オーディオ波形で音声がいつから入っているのかというチェックをするわけだが、PgDnを押して先に進めてから戻すと、先程は無音だったのに、遡ると何故か音が入っていることになるという「?」なことがあるので、一番最初のフレーム=1フレームから進めるやり方を一律採用するのが良いと思われる。
 大体30~33フレームで1秒。3フレームなら0.1秒くらい。5フレームいじるということは0.16秒くらいズレる可能性もある。1フレームの動画と音声が厳密に対応しているという確信がないため、ひょっとしたら間違っているかもしれない。出力すると実は0.1秒とはいえ音ズレを発生させる可能性がある、あまり良くない方法かもしれない。まあそうだとしても動画は大抵倍速再生~2.6倍速くらいで再生するので、0.1秒くらいずれていても気にはならないのだが。
 神経質なタチのであまり、こういうズレとか好きではないのだが、何度やっても異音が消えないときや、そもそもの動画でエンコードの指定範囲をいじれないケースなどの最終手段として、一応こういう手段があるよという話でした*4
 まあ、乏しい知識で、ああだこうだと試行錯誤をして苦労したので、この成果を一応書いて残しておきたくなりましたので、ここに駄文を残しておきます。

*1:そういうことを書いているものをググっても見つけられなかったので、書いておこうかなと。まあググり方が悪いだけで、実は既にいくつも書いてあるかもしれないのだが

*2:-999にすると-33333msとなる。厳密には33.333秒

*3:と書いていたらさそく-10じゃないとダメなケースが出た。-10固定のほうがいいかも?

*4:あとは、そもそもエンコーダーを変えるという手がありますね。動画の結合にAvidemuxを使用していて、これが一番結合するソフトでは使い勝手が良くて便利。音声だけ一度これで抽出するとかそういう手を使っても良いのかもしれないですね