当方、Mac で動作するアプリ VLC にて地デジを視聴していますが、難儀なのがNHKニュースなどの音声多重放送です。どうも調べていると、VLCでは音声多重放送においては音声が出力されない現象が発生するらしい。
世間には自力で解決する強者もいるようで、ソースにパッチを当てることで音声が出力されるように修正しているらしい。しかし、提供されているパッチは1年以上前のもので、Mac OS Lionの開発環境ではコンパイルが失敗してしまいました。
また、最新のソースに対してパッチを適用しようとするとpatchコマンドがエラーになり、うまくパッチが当たりませんでした。そこで手動にてパッチの内容を取り込むことにより対応しました。
== パッチの取得 ==
パッチを取得する。
http://2sen.dip.jp/dtv/ にある、“up0243.zip”を取得します。
直接取得する場合は http://2sen.dip.jp/cgi-bin/dtvup/source/up0243.zip となります。
== パッチをあてる ==
パッチファイルの内容だけではどのようにパッチをあてていいかよくわからなかったため、いったんパッチをあてる前と当てた後のソースを生成します。
$ git clone git://git.videolan.org/vlc.git
$ cd vlc
$ git checkout 16cb266
$ patch -b -p1 < vlc_patch.txt
上記操作により、以下に示すファイルにパッチがあたる。
modules/codec/faad.c
modules/packetizer/mpeg4audio.c
src/input/decoder.c
また、”-b” オプションを付与することで、パッチをあてる前のファイルは “*.orig” というファイル名で保持される。
パッチをあてたら、ディレクトリ名を”vlc1″に変更する。
$ cd ..
$ mv vlc vlc1
== 新しいVLCを取得 ==
Lionの環境でビルドができる新しいVLCを取得する。
$ git clone git://git.videolan.org/vlc.git
$ cd vlc
$ git checkout 97dca37bcf82a3219c9014d2ab64542677cd9910
$ patch -b -p1 < vlc_patch.txt
== 手動でマージする ==
“/Developer/Applications/Utilities/FileMerge.app” を使って “vlc1” 側の差分を確認しながら、 “vlc” (新しいvlc) に手動で適用していく。
ちなみに当方では “FileMerge.app” を使ったことがなかったので、wine から”WinMerge” を使って差分を適用した。
== VLCのビルド ==
Macの場合、 http://wiki.videolan.org/OSXCompile に従ってビルドすれば良い。
つまり、以下のとおりにすれば良い。
$ cd vlc && mkdir build && cd build
$ ../extras/package/macosx/build.sh
buildディレクトリ直下に “VLC.app” が出来上がるので、”/Applications” ディレクトリなどにコピーして作業は完了。