2012-04-08 4 views
1

私はmp3ファイルのコピーを作成しようとしています。私はそのmp3ファイルをトリミングする必要があります。入力を使用して、出力ストリームは私が推測することに使用することができます。コピーの通常のテキストファイルの種類は、再生される可能性のあるファイル。Javaでのファイル処理の知識がある方は、この中で私を助けてください。Androidプログラミングでオーディオファイル(mp3)をコピーしますか?

答えて

2

MP3ファイルはバイナリファイルです。したがって、バイナリファイル操作を使用してMP3をコピーする限り、コピーは成功します。

ただし、MP3ファイルをトリムするには、MP3ファイル構造を認識する必要があります。 MP3ファイルは、一連のMP3フレームで構成されています。各フレームは、MP3ヘッダから始まり、データが続きます。 MP3フレームヘッダーには、フレーム長を見つけるための情報が含まれています。 http://www.id3.org/mp3Frame

でMP3ヘッダ上の

詳細だから、限り、あなたはフレームの整数でコピーすると、あなたは大丈夫でなければなりません。そうでない場合でも、デコーダは不完全なフレームを無視します。

0

以下のコードは、mp3ファイルやその他すべてをコピーするソリューションです。私はトリミング部分を経験したことがありません。しかし、必要なバッファ量を指定するだけで、ファイルをトリムすることは論理的には可能だと思います。 実際にはdstは、ディレクトリ内のコピーされたファイルの名前です。

private void copyFile(String src, String dst) { 
    FileInputStream inputStream; // create an input stream 
    FileOutputStream outputStream; // create an output stream 
    try { 
     inputStream = new FileInputStream(src); // create object 
     outputStream = openFileOutput(dst, Context.MODE_PRIVATE); // save your file in private mode, which makes it inaccessible by other applications 
     int bufferSize; 
     byte[] bufffer = new byte[512]; // I think logically here could be useful for trimming the file. I mean just copy an specified part of the file. 
     while ((bufferSize = inputStream.read(bufffer)) > 0) { 
      outputStream.write(bufffer, 0, bufferSize); 
     } 
     inputStream.close(); 
     outputStream.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

これは、ファイルをコピーして、アプリケーションパッケージ名で内部ストレージにコピーする方法に関する提案です。さらに、私はトリムパートをまだテストしていません。だから私はそれについては分かりません。

もう一つ、あなたは

getFilesDir(); 
することで、アプリケーションのパスディレクトリを取得することができます
関連する問題