2012.04.30作成 はじめに †以前の記事を作成して以後、サーバーやOS等の環境が変わったためか、
エンコード後のmp4ファイルに音飛びが発生するようになった。
このページでは音飛び問題を解決する方法をまとめた。 環境 †エンコード †
再生環境 †
音飛びについて †以前の記事でまとめたエンコードの方法で作成したmp4ファイルをVLCで再生すると、
たまに音飛びが発生するようになった。
音飛びが発生すると、VLCのメッセージウィンドウに以下のようなログが出力される。 main warning: audio drift is too big (-129292), clearing out main warning: timing screwed, stopping resampling main warning: mixer start isn't output start (-62166) main debug: audio output is starving (446805), playing silence また、QuickTime Playerで再生すると、音飛び箇所以後音声と映像がずれてしまう。(音飛びは生じない) 音飛びしないエンコードの方法 †不具合が含まれている可能性が高いffmpeg内蔵のfaacを用いずに、音声のエンコードを別のプログラムを用いてエンコードすることにする。 faacの入手とコンパイル †faacはaacへエンコードするプログラムで、単品でコンパイルできるため、簡単に導入できる。今回はfaacを音声のエンコードに採用する。 vi common/mp4v2/mpeg4ip.h #ifdef __cplusplus extern “C” { #endif char *strcasestr(const char *haystack, const char *needle); #ifdef __cplusplus } #endif ↓コメントアウト /* #ifdef __cplusplus extern “C” { #endif char *strcasestr(const char *haystack, const char *needle); #ifdef __cplusplus } #endif */ makeが通ったら、sudo make installを実行し、インストール完了。通常、/usr/local/bin内にfaacプログラム本体がインストールされる。 faacを用いたエンコード方法 †音声はfaacを使用するが、映像はこれまで通りffmpegを使用する。音声と映像で別プログラムでエンコードするため、エンコードの手順はやや増加してしまい、以下の手順でエンコードを実施する。
自動化への対応 †以前作成したスクリプトを改造し、音声の分離から合成、不要ファイルの削除までを自動実行するスクリプトを作成した。 拡張子.txtはダウンロード後に削除して使用する。 まとめ †
参考ページ †コメント欄 †最新の10件を表示しています。 コメントページを参照 |