6

さまざまな CODEC の動作を学習するために使用できる単純なオーディオ リッパーを作成しようとしてきましたが、最初のステップで行き詰まってしまいました。CD からプログラムを読み取ることができません。次のコードは私が試していたものです。使用する

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;


public class learning 
{
    public static void main(String[] args) throws IOException 
    {   
        File cd = new File( "/dev/sr0" );
        RandomAccessFile rawAccess = new RandomAccessFile( cd, "r" );
        byte[] content = new byte[20];
        rawAccess.seek(19613);
        rawAccess.readFully(content);

        System.out.println(content);
    }

}

しかし、それは私に次のエラーを与えます

Exception in thread "main" java.io.IOException: Input/output error
    at java.io.RandomAccessFile.readBytes(Native Method)
    at java.io.RandomAccessFile.read(RandomAccessFile.java:355)
    at java.io.RandomAccessFile.readFully(RandomAccessFile.java:414)
    at java.io.RandomAccessFile.readFully(RandomAccessFile.java:394)
    at learning.main(learning.java:21)

なぜこれが得られるのかわかりません。おそらくRandomFileAccessは使用するのに適切なクラスではありませんでしたが、私が見つけた唯一のことは、これが機能するはずだと言いました

Java から CD を読み取る方法についてのヘルプをいただければ幸いです。

乾杯ダニエル

4

4 に答える 4

3

まず、OS Linux にログインしているユーザーがアクセスできるディレクトリにマウントする必要があります。例: /mnt/cdrom または /media/cdrom

その後、mp3 ファイルまたはオーディオ ファイルを開きます。

File cd = new File( "/dev/sr0/track1.mp3" );

また

File cd = new File( "/dev/sr0/track1.dat" );

(オーディオまたは Mp3 ファイルの拡張子を忘れないでください)。

于 2012-12-11T12:32:06.543 に答える
0

これはまったく同じではありませんが、うまくいくと思います...

オーディオCDの目次を読み取るためのプラットフォームに依存しない方法(Java?)はありますか?

組み込みのものを(教育上の理由で)使用したくない場合は、http://www.tritonus.org/がオープンソースであるため、それらがどのように使用されたかを確認できる可能性があります。

于 2012-10-14T04:54:26.590 に答える
0

ディレクトリの場合/dev/sr0、問題があります。音声ファイルの 1 つをパラメータとして渡してみてください。

        File cd = new File( "/dev/sr0/track1" );

それはうまくいくはずです。

于 2012-10-14T05:03:10.560 に答える
0

この質問には、問題に関連する関連する問題と回答があります:ハードドライブのマウントとアンマウント

リンクされた質問と受け入れられた回答によると、答えは「はい」と「いいえ」の両方です。ネイティブ インターフェイスのアダプタ パターンを使用する Java API を提供できますが、多くのことも行う必要があるため、ソリューションは純粋な Java ではなくハイブリッドになります。

  • マウント/アンマウント コマンドをサポートする Java インターフェイスを作成する
  • ネイティブ メソッドとしてインターフェイスを実装するクラスはネイティブを作成します
  • このコマンドの C またはその他の言語での実装。1
  • OS (Win、Mac、Linux) の実装は、1 つの jar ビルドにパックします
  • インターフェイスの実装を提供し、ネイティブ ライブラリをロードする小さなファクトリ
于 2012-10-14T05:02:05.910 に答える