Home > develop > osx Archive

osx Archive

Homebrewでffmpegインストール時の"ERROR: libmp3lame >= 3.98.3 not found"を回避

  • 2011年11月15日 03:13
  • osx

前のエントリで「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秒で即答する

  • 2011年11月 9日 00:26
  • osx

ifconfigでもちろん取れるけど、情報量多すぎるのでIPアドレスがどこに書かれてるか探してしまうCUI素人としては、極限まで情報量削ってもっと便利にしたい。と、いうことでこんなのを最近使ってます。

これをパスが通った場所に「i」という名前のファイルで置いて実行すると、IPアドレスだけ表示されて、かつクリップボードにも入るのですぐに利用できる状態になる。

手元で開発した内容をディレクターや他のメンバーと共有するときに、自分のIP教えてブラウザで直接見てもらうことがかなり多いんですけど、「i」「Enter」で共有できるようになったことで、めちゃめちゃコスト下がってかなり便利!

Mac OSXでライブDVDをmp3ファイルに変換

  • 2009年1月23日 06:57
  • osx

(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でオレオレ・プロトコルのヘルパアプリケーションを作成する

  • 2007年12月25日 01:46
  • osx

Skypeでは「callto:」, Peercastでは「peercast:」なんかの「オレオレ・プロトコル」がアプリケーションに関連付けられています。これらは、Web上のHTMLファイルからURLクリック(または、同等の処理)で、アプリケーションを起動させることができる、という利点があります。(もちろんセキュリティ上の問題もあるのですが、その話はまた別途)。

このプロトコルとアプリケーションの関連づけ、つまりプロトコルヘルパのアプリケーションをOSX上で作成する方法について、Mac初心者(利用歴1ヶ月くらい)がまとめたメモを残しておきます。よく理解できていない箇所もあるのでツッコミは大歓迎です。

お題として「kefir:」というプロトコルを定義したとして、ブラウザランチャアプリとして「KefirRunner」というアプリケーションを作ってみることにします。分かりやすく言うと、ターミナルから「open kefir://yahoo.co.jp」と入力すると、Firefox(標準のブラウザ)がyahoo.co.jpを開く感じです。

Index of all entries

Home > develop > osx Archive

Search
Feeds

Return to page top