Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 组合音频文件_Java_Android_Audio - Fatal编程技术网

Java 组合音频文件

Java 组合音频文件,java,android,audio,Java,Android,Audio,我录制了一些音频文件,存储在SD卡中。我需要将所有录制的文件合并成一个音频文件。我使用了以下代码。我的问题是组合文件只包含第一个录制的文件。任何建议…在readAudioAsStream()方法中,我尝试组合文件 public void readAudioAsStream() { getFullAudioPath() File f; FileInputStream ins = null; try { String comfile=ge

我录制了一些音频文件,存储在SD卡中。我需要将所有录制的文件合并成一个音频文件。我使用了以下代码。我的问题是组合文件只包含第一个录制的文件。任何建议…在readAudioAsStream()方法中,我尝试组合文件

public void readAudioAsStream() {
    getFullAudioPath()

    File f;
    FileInputStream ins = null;

    try 
    {
        String comfile=getCombineFile();
        //FileOutputStream fos=new FileOutputStream(comfile);
        Log.d("combined file",comfile);
        File file=new File(comfile);
        RandomAccessFile raf = new RandomAccessFile(file, "rw");
        Log.d("path size",Integer.toString(audFullPath.size()));
        for (int i=0;i<audFullPath.size();i++)
        {   
            String filepath=audFullPath.get(i);
            Log.d("Filepath",filepath);
            f=new File(audFullPath.get(i));
            fileContent = new byte[(int)f.length()];
            ins=new FileInputStream(audFullPath.get(i));
            int numofbytes=ins.read(fileContent);
            System.out.println("Number Of Bytes Read===========>>>"+numofbytes);
            raf.seek(file.length());
            raf.write(fileContent);
        }
    }
    catch (FileNotFoundException e1) {
        e1.printStackTrace();
    }
    catch (IOException e) {
        e.printStackTrace();
    }           
}
public ArrayList<String> getFullAudioPath() {
    ArrayList<String> fullPath=new ArrayList<String>();
    fullPath.clear();

    String path=filePath();
    File f=new File(path);
    if(f.isDirectory())
    {
        File[] files=f.listFiles();
        for(int i=0;i<files.length;i++)
        {
            String fpath=path+File.separator+files[i].getName().toString().trim();
            System.out.println("File Full Path======>>>"+fpath);
            fullPath.add(fpath);
        }
    }       
    return fullPath;
}
public String filePath() {
    String newFolderName="/MyAudio";
    String extstoredir=Environment.getExternalStorageDirectory().toString();
    String newPath=extstoredir+newFolderName;
    return newPath;
}

public String getCombineFile() {
    String newFolderName="/MyComAudio";
    String extstoredir=Environment.getExternalStorageDirectory().toString();
    String path=extstoredir+newFolderName;
    File myNewPath=new File(path);
    if(!myNewPath.exists()) {
        myNewPath.mkdir();
    }
    String audname="ComAudio";
    String ext=".3gp";
    File audio=new File(myNewPath,audname+ext);             

    if(audio.exists()) {
        audio.delete();
    }
    String audpath=path+"/"+audname+ext;
    Log.d("Combined audio file",audpath);
    return audpath;
}
public void readAudioAsStream(){
getFullAudioPath()
文件f;
FileInputStream ins=null;
尝试
{
字符串comfile=getCombineFile();
//FileOutputStream fos=新的FileOutputStream(comfile);
Log.d(“组合文件”,comfile);
文件文件=新文件(comfile);
RandomAccessFile raf=新的RandomAccessFile(文件“rw”);
Log.d(“路径大小”,Integer.toString(audFullPath.size());

对于(int i=0;i您不能仅通过在另一个
.3gp
文件的末尾写入一个
.3gp
文件的内容来合并两个
.3gp
文件。

您的音频文件的格式是什么?我正在录制3gp文件您可以使用
录音机将音频录制到文件中。
这将以原始PCM格式提供音频文件。您可以合并音频文件合二为一。但生成的文件将无法播放。您需要在该文件的开头添加正确的
WAV
标题以使其可播放。请注意,
AudioRecorder
MediaRecorder
更难使用。我在开发者网站上找不到关于AudioRecorder的任何信息。您能给我建议一些有用的信息吗链接或任何示例编码。AudioRecord文档:;您需要自己查找教程。我使用以下站点在android中录制音频。在上面的示例站点中,他们将原始文件转换为wav文件格式。我需要将原始文件转换为mp3文件格式。如何操作。请帮助我。