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.94.tar.gz
libcdio-paranoia-10.2+0.93+1.tar.bz2
2013/12/15 追記ファイルは*.bz2と*.gzがありますが、中身は同じですので、どちらでも良いです。
tarの解凍オプションは、*.bz2の場合はxjf、*.gzの場合はxzfです。
先に「libcdio-0.94」をインストールします。
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libcdio-0.94.tar.gz
$ cd libcdio-0.94
$ ./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
以上で終了です。
【更新履歴】を見る
2012/10/29 追記
インストールする順番を修正、手順などを入れ替えました。
libcdio-paranoia-10.2+0.90.tar.gz
libcdio-0.90.tar.gz
libcdio-0.90.tar.gz
libcdio-paranoia-10.2+0.90.tar.gz
先に「libcdio-paranoia-10.2+0.90」をインストールします。
次に「libcdio-0.90」をインストールします。
先に「libcdio-0.90」をインストールします。
次に「libcdio-paranoia-10.2+0.90」をインストールします。
2012/10/29 追記
MinGW-w64環境の場合、
$ make CC="gcc -D__MINGW64__"
としてコンパイルしないとにエラーになります。
mingwrtとw32apiの環境の場合は未確認です。
2012/10/30 追記
makeより先にパッチを適用すると、
../../include/cdio/paranoia/paranoia.h:18:23: fatal error: cdio/cdda.h: No such file or directory
となってしまうので、makeの後にパッチを適用してください。
$ patch -p1 < libcdio-paranoia-10.2-paranoia_h.diff
$ ./configure --prefix=/mingw --disable-cxx --disable-example-progs --disable-shared
$ make
$ patch -p1 < libcdio-paranoia-10.2-paranoia_h.diff
2013/04/17 追記
libcdio-paranoiaの最新版は、libcdio-paranoia-10.2+0.90+1 です。
libcdio-paranoia-10.2+0.90 を libcdio-paranoia-10.2+0.90+1 に修正しました。
ファイルの拡張子を「.gz」から「.bz2」に変更しました。
それに合わせて、tarのオプションを修正しました。
$ tar xzf libcdio-paranoia-10.2+0.90+1.tar.gz
$ tar xjf libcdio-paranoia-10.2+0.90+1.tar.bz2
2013/04/17 追記
libcdio-paranoiaは.bz2と.gzがありますが、中身は同じですので、どちらでも良いです。
2013/04/17 追記
include/cdio/paranoia/paranoia.h のパッチは不要になりました。
include/cdio/paranoia/paranoia.h 18行目
#include <cdio/paranoia/cdda.h>
を
#include <cdio/cdda.h>
に修正するパッチを適用します。
libcdio-paranoia-10.2-paranoia_h.diff
$ patch -p1 < libcdio-paranoia-10.2-paranoia_h.diff
2013/05/03 追記
pkg-configもインストールしておいてください。
2013/06/10 追記
mingw-w64-v2.0.xの場合、
c:\mingw\include\stdio.h:409:30: error: unknown type name '_off64_t'
int fseeko64(FILE* stream, _off64_t offset, int whence);
の他、'off32_t'、'off64_t' などが同じようなエラーになる場合があります。
その場合、configureオプションに「--disable-largefile」を追加してください。
2013/12/15 追記
libcdioの最新版は、libcdio-0.91 です。
libcdio-0.90 を libcdio-0.91 に修正しました。
libcdioのソースコードの拡張子を、tar.gz → tar.bz2 に変更、
tarのオプションを xzf → xjf に修正しました。
2013/12/15 追記
ファイルは*.bz2と*.gzがありますが、中身は同じですので、どちらでも良いです。
tarの解凍オプションは、*.bz2の場合はxjf、*.gzの場合はxzfです。
2013/12/15 追記
MinGW-w64環境の場合でも、gccのオプションに「-D__MINGW64__"」を付ける必要はなくなりました。
$ make CC="gcc -D__MINGW64__"
$ make
2013/12/15 追記
c:\mingw\include\stdio.h:409:30: error: unknown type name '_off64_t'
というエラーも修正されています。
2014/04/08 追記
libcdioの最新版は、libcdio-0.92 です。
libcdio-0.91 を libcdio-0.92 に修正しました。
2014/07/05 追記
以下の2件について、パッチを適用します。
patch #8293: Fix minute truncation in cdio_lsn_to_msf
patch #8302: Fix Win32 IOCTL SCSI_PASS_THROUGH mode
パッチファイルは、上記リンク先の「Attached Files」から入手できますが、こちらにも置いておきます。
libcdio-0.92-msf.patch
libcdio-0.92-win32_ioctl.patch
$ patch -p1 < libcdio-0.92-msf.patch
$ patch -p1 < libcdio-0.92-win32_ioctl.patch
2014/09/30 追記
libcdioの最新版は、libcdio-0.93 です。
libcdio-0.92 を libcdio-0.93 に修正しました。
2014/09/30 追記
libcdio-0.92用のパッチは、libcdio-0.93で取り込まれたので不要になりました。
$ patch -p1 < libcdio-0.92-msf.patch
$ patch -p1 < libcdio-0.92-win32_ioctl.patch
2014/10/19 追記
libcdio-paranoiaの最新版は、libcdio-paranoia-10.2+0.93+1 です。
libcdio-paranoia-10.2+0.90+1 を libcdio-paranoia-10.2+0.93+1 に修正しました。
2017/03/22 追記
libcdioの最新版は、libcdio-0.94 です。
libcdio-0.93 を libcdio-0.94 に修正しました。
ファイルの拡張子とtarのオプションを修正しました。
libcdio-0.93.tar.bz2
libcdio-0.94.tar.gz
$ tar xjf libcdio-0.93.tar.bz2
$ tar xzf libcdio-0.94.tar.gz
【更新履歴】を閉じる
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__"も必要でした。
ご指摘ありがとうございました。
記事を修正しました。
#何度も確認したつもりだったんですが、寝ぼけていたのでしょうかorz
libcdio-paranoia-10.2+0.90のcdda.hがインストールされる場所については、make uninstallして、まっさらな状態でconfigureからやり直してみたりしたのですが、何度やっても
cdio/paranoia/cdda.h
ではなく、
cdio/cdda.h
になります。
環境によるのか、謎ですね。
もう少し調べてみます。
が、
FFmpegの./configureで「libcdio Not Found」になります。
libcdio-0.90インストール
libcdio-paranoia-10.2+0.90(パッチ無し)make
パッチを当ててから make install
これでOKでした。
こちらもFFmoegのmakeまで確認せず報告してしまい、申し訳ありませんでした。
確認したところ、X5-452さんのご説明どおりでした。
パッチを先にすると、makeで失敗しました。
そのままmake installすると、パッチ済みのヘッダーが先にインストールされ、失敗したところからmakeし直してインストールされるので、上手くできているように見えていただけでした。
いろいろとありがとうございました。
色々と参考にさせて頂いてます。
今こちらを参考にコンパイルしようとしてたのですが、0.90をmakeしようとするとエラーを吐いてしまいました。
これはなんのエラーか判りますでしょうか?
http://www.co1014802.info/text/Baidu.jpeg
一応make時のコマンドは make CC="gcc -D__MINGW64__"にしました。
環境はMSYS_MinGW-w64_GCC_472_x86-x64_Fullで作った物なのですが・・・
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にしたら通りました。
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.
と出てしまいました。
この場合どうしたら良いでしょうか?
PKG_CONFIG_PATH="/mingw/i686-w64-mingw32/lib/pkgconfig"
をいれればOKだよ。
なるほど、それを入れれば良かったのですか。
φ(゚Д゚ )フムフム…
無事コンパイルできました。
あべちんさん、sada_maruさん、いつもお世話になってます○┓ペコリ
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が存在しないとおかしいのでしょうか?
pkg-configがインストールされていないだけだったようです。
ブログ記載の方法でいけました。
大変失礼致しましたw。
とりあえず、解決して良かったです。
他にも、同じ問題でハマっている方がいるかもしれませんので、pkg-configのインストールについて追記しておきました。
前に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に問題があるのかもしれませんね。
全然参考にならずに申し訳ありません。
情報ありがとうございます。
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のパッチも適用してみます。
パッチが出ているのは知りませんでしたので、参考になりました。
ありがとうございました。
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では正常に動作しない、
という事になるのでしょうかね。
長文失礼しました。
お返事が遅くなり、申し訳ありません。
よく確認していなかったのですが、
ffmpeg -f libcdio -ss 0 -i D: test.wav
というように、-ssは付けないとダメでした。
失礼しました。
オプションについては、ヘルプやソースを見ても分からない時は、付けたり外したり、順番を入れ替えてみたり、試行錯誤してやっています。
私も64bit環境で試したいのですが、金銭的な事情で、もう少し先になりそうです。
コメントありがとうございます。
はるか昔、仕事でSunのUNIXワークステーションを使い始めたころから、現在は主にLinuxで、仕事でもプライベートでも何回使ったか分からないくらいtarを使ってきましたが、初めて知りました!ギョギョ!
自動判別できるのは、2004-12-20のVersion1.15からですね。
https://www.gnu.org/software/tar/
今までの記事を全部見直すのも大変なので、このまま行こうと思います。
教えていただき、ありがとうございました。