作成中
はじめに
以前の記事を作成して以後、サーバーやOS等の環境が変わったためか、 エンコード後のmp4ファイルに音飛びが発生するようになった。 このページでは新たに発生した音飛びという課題を解決する方法をまとめた。
環境 (エンコード環境) NEC Express5800 GT110b Scientific Linux 6.1 ffmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers
built on Jan 29 2012 17:52:15 with gcc 4.4.5 20110214 (Red Hat 4.4.5-6)
(rpmforgeからffmpeg-develをインストール) (再生環境) mac mini(mid 2009) Mac OS X バージョン10.6.8 VLC media player Version 1.0.5 Goldeneye QuickTime Player バージョン 10.0 (131)
音飛びについて
以前の記事でまとめたエンコードの方法で作成した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で再生すると、音飛び箇所以後音声と映像がずれてしまう。(音飛びは生じない) 複数のプレーヤー(QTとVLC)で音声の再生に不具合が出ること、mp4作成時に音声のエンコードを 行わず、元のcodecのままmp4を作成すると不具合は出ないことから、ffmpeg内蔵のfaacに何らかのバグか 不具合が含まれていると推測される。
音飛びしないエンコードの方法
不具合が含まれている可能性が高いffmpeg内蔵のfaacを用いずに、音声のエンコードを別のプログラムを用いてエンコードすることにする。 ffmpegを自分でコンパイルする方法も解決策として挙げられるが、ffmpegをコンパイルするまでに他のプログラムをコンパイルする必要があり、それだけでも手間がかかるし、コンパイルの失敗などで別のトラブルが発生しないとも限らないので、ffmpegのコンパイルは見送る。 今回も、最小の労力で問題を解決する事を心がける。
faacの入手とコンパイル
sourceforgeからfaac-1.28をダウンロードする。http://en.sourceforge.jp/projects/sfnet_faac/releases/ configure, makeと進めるが、エラーが出て終了した場合、ソースファイルの以下の箇所をコメントアウトする。
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を実行し、インストール完了。
参考ページ http://fkob.net/blog/2012/02/centos-faacライブラリのコンパイルエラー/