1

機能が完成したボイスレコーダーを作成したいのですが、この機能の一時停止と再開機能を実装する必要があります。2つのオーディオファイルをマージする必要がありますが、正確な結果を得ることができません。シーケンス入力ストリームを使用しましたが、このマージは最初のファイルのみです。これは私のコードです

FileInputStream fis1 = new FileInputStream(mergeFile.get(0));
        @SuppressWarnings("resource")
        FileInputStream fis2 = new FileInputStream(mergeFile.get(1));

        Vector<FileInputStream> v = new Vector<FileInputStream>();
        v.add(fis1);
        v.add(fis2);
        Enumeration<FileInputStream> e = v.elements();
        String filepath = Environment.getExternalStorageDirectory()
                .getPath();
        File file = new File(filepath, "Test");
        file.mkdir();

        // InputStream inputStream1 = new FileInputStream(recording1);
        // InputStream inputStream2 = new FileInputStream(recording2);

        @SuppressWarnings("resource")
        SequenceInputStream sistream = new SequenceInputStream(e);
        FileOutputStream fostream = new FileOutputStream(file
                + "/myfile.mp3");

        int temp = 0;
        while ((temp = sistream.read()) != -1) {
            // System.out.print( (char) temp ); // to print at DOS prompt
            fostream.write(temp); // to write to file
        }

        fostream.close();
        sistream.close();
        // recording1.close();
        // r/ecording2.close();
    }

最終結果を再生すると、最初のファイルのみが再生されます。

4

1 に答える 1

1

この合併コードを使用してください

import java.io.*;
import java.util.*;
class Merger
{
public static void main(String args[]) throws Exception
    {
    System.out.println("enter the filename");
    int a,no,i,j=1;
    String str,start;
    int ch;
    Console c=System.console();
    str=c.readLine();
    System.out.println("enter the destination file size");
    start=c.readLine();
    a=Integer.parseInt(start);


    File fr=new File(j+str);
    if(!fr.exists())
    {
        System.out.println("error");
        System.exit(0);
    }
        FileOutputStream fos=new FileOutputStream((str));
    for(i=0,j=1;    ;)
    {
        FileInputStream f=new FileInputStream(j+str);


        for(i=0;   (ch=f.read())!=-1  ;++i)
        fos.write(ch);
        j++;
            File fq=new File(j+str);
        if(!(fq).exists())
        {
            System.out.println("process completed");
            System.exit(0);
        }

    }
    }
}   

このためには、mp3 ファイルを入力ストリームに変換し、この入力ストリームを 2 番目の入力ストリームに追加する必要があります。テキストファイル用のこのコードは、オーディオファイルにも使用できます。

于 2013-09-04T12:29:04.490 に答える