经过长时间的讨论,我首先写这篇文章,让我们讨论一下我想要的...
我想整理一个.mp3格式的音频文件,我认为这将是一个好问题,因为许多用户都需要答案,这是获得
的最佳位置对此有太多问题,但没有完全可接受的答案,许多答案建议使用不同的库,例如RingDroid和FFMPEG,但问题是没有人告诉我如何使用它们来修剪文件,之后我从帖子中得到了一些建议。 ...
将mp3转换为字节数组,然后修剪文件,然后再次在文件中解码,或者您可以直接播放
我能够实现编码和解码,但是请任何人建议我如何切割字节数组,然后将其生成文件并将其保存在内存中
我要这样做的代码。...
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputStream inStream = getApplicationContext().getResources().openRawResource(R.raw.ed);
byte[] music = new byte[0];
try {
music = new byte[inStream.available()];
music = convertStreamToByteArray(inStream);
convertBytesToFile(music);
inStream.close();
Toast.makeText(this, ""+music.length, Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
}
public static byte[] convertStreamToByteArray(InputStream is) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buff = new byte[10240];
int i = Integer.MAX_VALUE;
while ((i = is.read(buff, 0, buff.length)) > 0) {
baos.write(buff, 0, i);
}
return baos.toByteArray(); // be sure to close InputStream in calling function
}
private void convertBytesToFile(byte[] bytearray) {
try {
File outputFile = File.createTempFile("file", "mp3", getCacheDir());
outputFile.deleteOnExit();
FileOutputStream fileoutputstream = new FileOutputStream(outputFile);
//Now i found something to divide byte array and mp3 file copyOfRange()
byte[] hello= Arrays.copyOfRange(bytearray,0,bytearray.length/2);
fileoutputstream.write(hello);
// fileoutputstream.write(bytearray);
fileoutputstream.close();
MediaPlayer mp=new MediaPlayer();
FileInputStream fis = new FileInputStream(outputFile);
mp.setDataSource(fis.getFD());
mp.prepare();
mp.start();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
在上面的代码中,我能够对文件进行编码和解码,但是如果您建议使用任何库,则无法进行修剪,请提供详细信息以实现此目的...
我现在只是编辑我的问题,我的问题是如何在运行时从用户那里获得开始和结束位置。...
感谢您的关注