osx Archive
Homebrewでffmpegインストール時の"ERROR: libmp3lame >= 3.98.3 not found"を回避
前のエントリで「libmp3lameあたりでコケる」と言ったのですが、そのときの対応方法のメモ。
ERROR: libmp3lame >= 3.98.3 not found
brew install ffmpegしたときのエラーはlibmp3lameが3.98.3以上のものが見つからないというエラーでした。ところが、
$ lame --version LAME 64bits version 3.99.1 (http://lame.sf.net) Copyright (c) 1999-2011 by The LAME Project Copyright (c) 1999,2000,2001 by Mark Taylor Copyright (c) 1998 by Michael Cheng Copyright (c) 1995,1996,1997 by Michael Hipp: mpglib This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
と、なっているので、lame本体は3.99.1の最新のものがインストールされているようです。要はこいつが認識されていないよう。
最初は、(他の)ライブラリのインストールが失敗していて、正しく認識されないことを疑ったのですが、どうもそうではなさそう。
そもそもどのバージョンとして認識されているのか
インストールされていないことは無さそうなので、一体どのバージョンがインストールされていると見なされているんだろう、、途方に暮れつつも共有ライブラリのバージョンの確認方法がそもそもよくわかりません。。。とりあえず、libmp3lameのインストールされている場所を確認してみます。
$ locate libmp3lame /usr/lib/libmp3lame.dylib /usr/local/Cellar/lame/3.99.1/lib/libmp3lame.0.dylib /usr/local/Cellar/lame/3.99.1/lib/libmp3lame.a /usr/local/Cellar/lame/3.99.1/lib/libmp3lame.dylib /usr/local/lib/libmp3lame.0.dylib /usr/local/lib/libmp3lame.a /usr/local/lib/libmp3lame.dylib
なんかいっぱい出てきました。下の/usr/local/lib以下のものは、実際はそれぞれ/usr/local/Cellar/lame/3.99.1/以下のシンボリックリンクになっているようですが、一番上のものが何やら疑わしいです。普通、バージョン情報なんかは文字列として埋め込まれている可能性が高いので、stringsで覗いてみると
$ strings /usr/lib/libmp3lame.dylib | less l3_side->main_data_begin: %i , 3DNow! Warning: many decoders cannot handle free format bitrates >320 kbps (see documentation) xr^3/4 3.97 LAME3.97 http://www.mp3dev.org/ 32bits mpg123: Bogus region length (%d) mpg123: Can't rewind stream by %d bits! 333333? ...
むむむ。LAME3.97とすごい怪しいバージョン番号ぽいものが見えます。。。! では、他のファイルはどうなのかと思い、/usr/local/lib以下のものを調べてみると
$ strings /usr/local/libmp3lame.dylib | less Error: can't allocate VbrFrames buffer strange error flushing buffer ... Error: MAX_HEADER_BUF too small in bitstream.c Internal buffer inconsistency. flushbits <> ResvSize bit reservoir error: ... This is a fatal error. It has several possible causes: 90%% LAME compiled with buggy version of gcc using advanced optimizations 9%% Your system is overclocked 1%% bug in LAME encoding library LAME %s version %s (%s) LAME version %s (%s) ... INTERNAL ERROR IN VBR NEW CODE (986), please send bug report INTERNAL ERROR IN VBR NEW CODE (1313), please send bug report maxbits=%d usedbits=%d 3.99.1 L3.99r http://lame.sf.net ...
おおお、やはりlameのバージョンである3.99.1という文字列が確認できます。やはりこの/usr/local/lib以下のものよりも優先して/usr/lib以下の低いバージョンの共有ライブラリが参照されているようです。試しに、この低い方のものを削除して、brew install ffmpegしなおしてみると
$ brew install --use-gcc ffmpeg ==> Downloading http://ffmpeg.org/releases/ffmpeg-0.8.6.tar.bz2 File already downloaded in /Users/katsuma/Library/Caches/Homebrew ==> ./configure --prefix=/usr/local/Cellar/ffmpeg/0.8.6 --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --cc= ==> make install /usr/local/Cellar/ffmpeg/0.8.6: 97 files, 55M, built in 5.7 minutes
ビンゴ!やはり低いバージョンのものが邪魔をしていたようです。。。!どういう経路でこの古いバージョンのlibmp3lameが入ってきたのか謎ですが、何かのアプリケーションをインストールしたときに一緒に入って、アプリケーションのアンインストール時に削除されないまま残ったのかもしれません(謎)
まとめ
ライブラリのバージョン依存でインストールに困ったときは、とりあえず
- locateで該当対象のファイルパスのリストを洗い出し
- stringsでバージョン確認
な感じでしょうか。ただ、このstringsで確認するあたりが正当法じゃない感じがする。。のですが、もっといいバージョン確認方法があればぜひ教えていただきたいです。
MacOSXでIPアドレスを迷わず1秒で即答する
ifconfigでもちろん取れるけど、情報量多すぎるのでIPアドレスがどこに書かれてるか探してしまうCUI素人としては、極限まで情報量削ってもっと便利にしたい。と、いうことでこんなのを最近使ってます。
これをパスが通った場所に「i」という名前のファイルで置いて実行すると、IPアドレスだけ表示されて、かつクリップボードにも入るのですぐに利用できる状態になる。
手元で開発した内容をディレクターや他のメンバーと共有するときに、自分のIP教えてブラウザで直接見てもらうことがかなり多いんですけど、「i」「Enter」で共有できるようになったことで、めちゃめちゃコスト下がってかなり便利!
Mac OSXでライブDVDをmp3ファイルに変換
(2011.11.7追記)0SExがLionで動作しなくなったので、Lion用のgemを作成しました。
ライブDVDはよく買うので、mp3へ変換してiPodに入れて持ち歩く、というのは何回かやってるものの、この手順をすぐに忘れて途中で詰まるのでメモしておきます。当然ながらコンテンツ保護を破ってうんぬんすることを推奨するものではなくて、あくまで個人で楽しむためのものです。
チャプターごとのvobファイルに変換
OSExというソフトを利用することでチャプターごとに分割した音声だけのvobファイルに変換してくれます。このソフト、すごく分かりにくいUIなんですけど、次のポイントだけ押さえればOKです。
- Ti(タイトル) -> 変更なし
- Ch(チャプター) -> 変更なし
- An(アングル) -> 変更なし
- Vid(ビデオ) -> チェクを外す
- Aud(オーディオ) -> 変更なし
- Fmt -> "Prog. Streams"を選択
- Seg -> "Chapter"を選択
Beginボタンを押せば、変換が開始されます。変換は結構時間かかるのでのんびり待ちましょう。
ffmpegでwavに変換
a52decXなんてソフトもあって、これを利用するとaiffかmp3に変換できるようなのですけど、僕の環境だとよく変換にミスったり、そもそもこのソフトがよく固まって終了不可になったりするのでこれはパスします。
そこで、ffmpegで一度wavに変換します。ffmpegはMac Portsで簡単にインストールできます。
また、wavへの変換もオプションなしで素直に変換すればOKです。
ffmpeg -y -i hoge001.vob 001.wav
最初はffmpegでmp3に変換しようとしていたのですが、どうやっても64kbpsのビットレートでしかエンコードできず、他のビットレートにすると音割れがしてまともに再生できない状況でした。なのでmp3変換はパスしてとりあえずwavにしています。
iTunesでwavをmp3/AACに変換
最後にiTunes使ってmp3/AACに変換します。これが一番簡単かつ確実。
wavファイルをiTunesへD&Dするとライブラリに読み込まれるので、その後に右クリック>mp3(か、AAC)に変換を選択すればOKです。
まとめ
mp3/AACへの変換も結構簡単にサクサクできちゃいます。これを機会に棚で眠ってるDVDを掘り起こしてみるのはいかがでしょうか?ちなみにこれを書いてるときは原田郁子さんのライブDVDを変換して取り込んでいました。
OSXでオレオレ・プロトコルのヘルパアプリケーションを作成する
Skypeでは「callto:」, Peercastでは「peercast:」なんかの「オレオレ・プロトコル」がアプリケーションに関連付けられています。これらは、Web上のHTMLファイルからURLクリック(または、同等の処理)で、アプリケーションを起動させることができる、という利点があります。(もちろんセキュリティ上の問題もあるのですが、その話はまた別途)。
このプロトコルとアプリケーションの関連づけ、つまりプロトコルヘルパのアプリケーションをOSX上で作成する方法について、Mac初心者(利用歴1ヶ月くらい)がまとめたメモを残しておきます。よく理解できていない箇所もあるのでツッコミは大歓迎です。
お題として「kefir:」というプロトコルを定義したとして、ブラウザランチャアプリとして「KefirRunner」というアプリケーションを作ってみることにします。分かりやすく言うと、ターミナルから「open kefir://yahoo.co.jp」と入力すると、Firefox(標準のブラウザ)がyahoo.co.jpを開く感じです。