2012年10月29日

libcdioのコンパイル&インストール (libcdio-0.90以降)

libcdioは、以下の場所にあります。
http://www.gnu.org/s/libcdio/

先に、libiconvをインストールしておいてください。

2013/05/03 追記
pkg-configもインストールしておいてください。


libcdioのソースコードは、以下の場所から入手します。

Other Links
Project Page – The GNU Savannah project page より、
Compact Disc Input and Control Library
http://savannah.gnu.org/projects/libcdio/
に進みます。

左下の方の
Quick Overview
Download Area より、以下の2つのファイルをダウンロードします。
http://ftp.gnu.org/gnu/libcdio/
libcdio-0.93.tar.bz2
libcdio-paranoia-10.2+0.93+1.tar.bz2

2013/12/15 追記
ファイルは*.bz2と*.gzがありますが、中身は同じですので、どちらでも良いです。
tarの解凍オプションは、*.bz2の場合はxjf、*.gzの場合はxzfです。

先に「libcdio-0.93」をインストールします。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf libcdio-0.93.tar.bz2
$ cd libcdio-0.93
$ ./configure --prefix=/mingw --disable-cxx --disable-example-progs --disable-shared
$ make
$ make install


次に「libcdio-paranoia-10.2+0.93+1」をインストールします。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf libcdio-paranoia-10.2+0.93+1.tar.bz2
$ cd libcdio-paranoia-10.2+0.93+1
$ ./configure --prefix=/mingw --disable-cxx --disable-example-progs --disable-shared
$ make
$ make install

以上で終了です。

【更新履歴】を見る
posted by あべちん at 05:00 | Comment(19) | TrackBack(0) | FFmpeg追加ライブラリ
この記事へのコメント
お疲れ様です。

cdioを新規インストールする場合、libcdio-0.90を先にインストールしないとlibcdio-paranoia-10.2+0.90の./configure時に「libcdioが無いよ」というErrorがでます。

後、libcdio-paranoia-10.2-paranoia_h.diffを当てると「cdio/cdda.h"の場所に無いよ」と怒られましたw

libcdio-0.90→libcdio-paranoia-10.2+0.90(パッチ無し)の順で無事インストールが完了しました。
MinGW-w64環境なのでmake CC="gcc -D__MINGW64__"も必要でした。
Posted by X5-452 at 2012年10月29日 15:13
X5-452さん、こんにちは。管理人です。

ご指摘ありがとうございました。
記事を修正しました。
#何度も確認したつもりだったんですが、寝ぼけていたのでしょうかorz

libcdio-paranoia-10.2+0.90のcdda.hがインストールされる場所については、make uninstallして、まっさらな状態でconfigureからやり直してみたりしたのですが、何度やっても
cdio/paranoia/cdda.h
ではなく、
cdio/cdda.h
になります。

環境によるのか、謎ですね。
もう少し調べてみます。
Posted by あべちん at 2012年10月29日 18:48
こちらの環境では、libcdio-paranoia-10.2+0.90のmakeにパッチを当てるとErrorが出てしまいます。
が、
FFmpegの./configureで「libcdio Not Found」になります。

libcdio-0.90インストール
libcdio-paranoia-10.2+0.90(パッチ無し)make
パッチを当ててから make install

これでOKでした。

こちらもFFmoegのmakeまで確認せず報告してしまい、申し訳ありませんでした。
Posted by X5-452 at 2012年10月29日 19:23
X5-452さん

確認したところ、X5-452さんのご説明どおりでした。

パッチを先にすると、makeで失敗しました。
そのままmake installすると、パッチ済みのヘッダーが先にインストールされ、失敗したところからmakeし直してインストールされるので、上手くできているように見えていただけでした。

いろいろとありがとうございました。
Posted by あべちん at 2012年10月30日 20:33
こちらこそ。
色々と参考にさせて頂いてます。
Posted by X5-452 at 2012年10月31日 16:47
どうもです。
今こちらを参考にコンパイルしようとしてたのですが、0.90をmakeしようとするとエラーを吐いてしまいました。
これはなんのエラーか判りますでしょうか?
http://www.co1014802.info/text/Baidu.jpeg
 一応make時のコマンドは make CC="gcc -D__MINGW64__"にしました。
環境はMSYS_MinGW-w64_GCC_472_x86-x64_Fullで作った物なのですが・・・
Posted by キュアミューズ=裕己 at 2012年12月26日 17:41
連投失礼します。

libconvをi686-w64-mingw32にコンパイルして、さらにlibcdioを./configure時に./configure  --prefix=/mingw/i686-w64-mingw32 --build=i686-w64-mingw32--host=i686-w64-mingw32 --disable-cxx --disable-example-progs --disable-sharedにしたら通りました。
Posted by キュアミューズ=裕己 at 2012年12月26日 18:08
再び失礼します

0.90はインストール出来たのですが、libcdio-paranoia-10.2+0.90をインストールしようと思い./configureすると
checking for LIBCDIO... no
configure: error: Required libcdio library not found. Please get libcdio from ht
tp://www.gnu.org/software/libcdio/ and install it.
と出てしまいました。
この場合どうしたら良いでしょうか?
Posted by キュアミューズ=裕己 at 2012年12月26日 19:00
キュアミューズ=裕己さん

PKG_CONFIG_PATH="/mingw/i686-w64-mingw32/lib/pkgconfig"
をいれればOKだよ。
Posted by X5-452 at 2012年12月27日 03:26
sada_maruさんありがとうです^^
なるほど、それを入れれば良かったのですか。
φ(゚Д゚ )フムフム…
無事コンパイルできました。
あべちんさん、sada_maruさん、いつもお世話になってます○┓ペコリ
Posted by キュアミューズ=裕己 at 2012年12月27日 06:23
初歩的な質問で失礼致します。

libcdio-0.90をインストール後の、
libcdio-paranoia-10.2+0.90+1の./configure時に、

上記の方同様に
configure: error: Required libcdio library not found. Please get libcdio from http://www.gnu.org/software/libcdio/ and install it.

と言われてしまいます。

PKG_CONFIGまたはPKG_CONFIG_PATHに、
/mingw/lib/pkgconfig
とすると今度は/mingw/lib/pkgconfig: is a directory
と言われ、同様の結果になってしまいます。

実際には/mingw/lib/pkgconfigに、libcdio.pcが存在しています。

/mingw/i686-w64-mingw32/lib/pkgconfigが存在しないとおかしいのでしょうか?


Posted by Ru- at 2013年05月02日 07:47
自己解決
pkg-configがインストールされていないだけだったようです。
ブログ記載の方法でいけました。
大変失礼致しましたw。
Posted by Ru- at 2013年05月02日 17:36
Ru-さん、こんにちは。管理人です。

とりあえず、解決して良かったです。

他にも、同じ問題でハマっている方がいるかもしれませんので、pkg-configのインストールについて追記しておきました。
Posted by あべちん at 2013年05月03日 22:39
こんにちわ。
前にlibcdioでリッピングが出来ない、との書き込みを見
かけましたので試して見ましたところ、確かに出来ません
でした。
あちこち探していたところ、GNUの掲示板?ですかね、
リンク先でパッチを見つけました。

私が試したところ、libcdioには最低でも2つのパッチを
当てないと動作しないようです。#8302と#8293です。
ここでいう動作とは、testプログラムがCDを読み込むか
どうか、という意味です。
cd-paranoiaでもリッピングが可能になりましたが、吐き
出されたwavは聞くに堪えない雑音まみれのファイルとな
ってしまいました。

肝心のffmpeg(ver2.2)ですが、結果はダメでした。
異常なファイルが吐き出されます。

しかし、このパッチを当てた事でmplayerからはリッピン
グが可能になりました。しかも音も正常です。
ちなみにmplayerのコマンドはこんな感じです

mplayer -fs cdda://1/n: -ao pcm:file=track1.wav

これの意味がよく分かりません。ffmpegだけがダメなら
ffmpegのバグかもしれないと検討がつきますがcdioと密
接な関係にあるcd-paranoiaが吐き出した異常なwavを聞
くとそうでもないような気もします。
やはりlibcdioに問題があるのかもしれませんね。
全然参考にならずに申し訳ありません。
Posted by psx at 2014年04月04日 17:12
psxさん、こんにちは。管理人です。

情報ありがとうございます。

libcdio-0.92に#8302と#8293のパッチを適用して、ffmpegをビルドし直して試してみたら、リッピングできました!

CDドライブがD:なら、

ffmpeg -f libcdio -i D: test.wav

とすると、1つのwavファイルになります。

出力ファイル無しで1回実行すると、トラックごとのstartとendが分かるので、

-ss start[秒]
-t (end - start)[秒]

を指定して、トラックごとに分割できます。
例えば、track10がこんな感じ(数値は適当です)なら、
Chapter #0.10: start 3600.050000, end 3660.100000

ffmpeg -f libcdio -ss 3600.050000 -i D: -t 60.05 track10.wav

私が試した限りでは、雑音などは無くリッピングできました。

次にffmpegをアップする時には、libcdioのパッチも適用してみます。

パッチが出ているのは知りませんでしたので、参考になりました。
ありがとうございました。
Posted by あべちん at 2014年04月06日 20:29
こんばんわ。
ffmpeg -f libcdio -i D: test.wav
だと私の環境(win7-64)では「もっと情報入力してね」
って怒られ空のwavファイルが吐き出されます。
--------------------------------------------------
トラック毎にリッピングしたい場合

ffmpeg -f libcdio -i D:

でCDのトラック情報を出力し、

ffmpeg -f libcdio -ss start -i D: -t end-start
output.wav

のようにトラックの始終点を指定する(1行で入力)。
出力ファイル名は任意

例:トラック1をリッピングする

Chapter #0.0: start 0.000000, end 203.200001
^
*0.0はトラック1、0.1はトラック2

という情報が得られたとしたら

ffmpeg -f libcdio -ss 0.0 -i D: -t 203.200001
1.wav

と指定する。
--------------------------------------------------
という事になるのでしょうか。というかこの情報自体知
らなかったです。よく見たらコンソールに出力されてま
すね…ソースを見てもオプションの組み合わせがイマイ
チ分かりにくかったりしますので、こちらのサイトには
随分助けられております。
おかげでリッピングが可能になりました、ありがとうご
ざいます。

現時点で#8293はコミットされたようですが#8302はされ
ていません。#8302を適用しないとsrc/cd-readがCDを読
み込みませんでした。
しかし#8302はclangでビルドすると(64bit環境では)警
告(エラーではありません)がでますので、完全な修正で
は無いのかもしれません

ですのでもしこちらでpatch情報を公開される時は慎重
に扱った方がよろしいかと思います。どの道win-64bit
に正式対応したものは数える程しかないので、警告やエ
ラーが出る度に自前で修正するのが当たり前な環境にな
っていますけど。

ここまで来れば完全に蛇足ですが、paranoiaだけは雑音
まみれのファイルを吐き出します。
cd-paranoia 1
とすると、トラック1のwavが吐き出されるのですが相当
の雑音が混じります。0.83でも同じ結果でした。
mplayerとffmpegでは正常なのにparanoiaだけが異常と
いう事は、比較するサンプルは少ないですけど、
cd-paranoiaのプログラムはwinでは正常に動作しない、
という事になるのでしょうかね。

長文失礼しました。
Posted by psx at 2014年04月07日 18:06
psxさん、こんにちは。管理人です。
お返事が遅くなり、申し訳ありません。

よく確認していなかったのですが、
ffmpeg -f libcdio -ss 0 -i D: test.wav
というように、-ssは付けないとダメでした。
失礼しました。

オプションについては、ヘルプやソースを見ても分からない時は、付けたり外したり、順番を入れ替えてみたり、試行錯誤してやっています。

私も64bit環境で試したいのですが、金銭的な事情で、もう少し先になりそうです。
Posted by あべちん at 2014年04月22日 23:19
大した情報ではないですが、*.tar.Z, taz, (compress), *.tar.gz, *.tgz, *.tar.bz2, *.tbz, *.tbz2, *.tar.xz, *.tar.lzma, *.tar.lz (lzip) らは、対応する圧縮形式が解凍できる(gzip, bizp2, xz, lzip 等のインストールされている)環境であれば、"tar zxf" や "tar Jxf" など圧縮形式毎にオプションを切り替えなくても、すべて "tar xf" のみで圧縮形式が自動判別され、解凍できます。
Posted by 通りすがり at 2016年03月27日 12:56
通りすがりさん、こんにちは。管理人です。

コメントありがとうございます。

はるか昔、仕事でSunのUNIXワークステーションを使い始めたころから、現在は主にLinuxで、仕事でもプライベートでも何回使ったか分からないくらいtarを使ってきましたが、初めて知りました!ギョギョ!

自動判別できるのは、2004-12-20のVersion1.15からですね。
https://www.gnu.org/software/tar/

今までの記事を全部見直すのも大変なので、このまま行こうと思います。

教えていただき、ありがとうございました。
Posted by あべちん at 2016年03月31日 23:35
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/59620718
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック