我想获得两个音频文件作为输入,然后按字节合并它们并将其保存为单个文件.
在这段代码中我尝试用Java做它并且它工作正常,但我不知道如何在androID中做到这一点.
如何在androID中做到这一点?
import java.io.file;import java.io.inputStream;import java.nio.file.files;import java.nio.file.Paths;import java.nio.file.Path;import javax.sound.sampled.AudiofileFormat;import javax.sound.sampled.AudioinputStream;import javax.sound.sampled.AudioSystem;public class filemixer { public static voID main(String[] args) { try { Path path1 = Paths.get("C:\Srini\Wav\welcome.wav"); Path path2 = Paths.get("C:\Srini\Wav\goodbye.wav"); String path3 ="C:\Srini\Wav\srini12.wav"; file Newfilepath=new file(path3); byte[] byte1 = files.readAllBytes(path1); byte[] byte2 = files.readAllBytes(path2); byte[] out = new byte[byte1.length]; for (int i=0; i<byte1.length; i++) { out[i] = (byte) ((byte1[i] + byte2[i]) >> 1); } inputStream byteArray = new ByteArrayinputStream(out); AudioinputStream ais = AudioSystem.getAudioinputStream(byteArray); AudioSystem.write(ais, AudiofileFormat.Type.WAVE,Newfilepath); } catch(Exception e) { e.printstacktrace(); } }}
解决方法:
private voID mergeSongs(file mergedfile,file...mp3files){ fileinputStream fisToFinal = null; fileOutputStream fos = null; try { fos = new fileOutputStream(mergedfile); fisToFinal = new fileinputStream(mergedfile); for(file mp3file:mp3files){ if(!mp3file.exists()) continue; fileinputStream fisSong = new fileinputStream(mp3file); SequenceinputStream sis = new SequenceinputStream(fisToFinal, fisSong); byte[] buf = new byte[1024]; try { for (int readNum; (readNum = fisSong.read(buf)) != -1;) fos.write(buf, 0, readNum); } finally { if(fisSong!=null){ fisSong.close(); } if(sis!=null){ sis.close(); } } } } catch (IOException e) { e.printstacktrace(); }finally{ try { if(fos!=null){ fos.flush(); fos.close(); } if(fisToFinal!=null){ fisToFinal.close(); } } catch (IOException e) { e.printstacktrace(); } } }
总结 以上是内存溢出为你收集整理的如何将两个音频文件合并到android中的单个音频文件中?全部内容,希望文章能够帮你解决如何将两个音频文件合并到android中的单个音频文件中?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)