После долгого времени я пишу этот пост, прежде всего давайте обсудим, что я хочу ...
Я хочу обрезать аудиофайл в формате .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();
}
}
}
В приведенном выше коде я могу кодировать и декодировать файл, но не могу обрезать, если вы предлагаетелюбая библиотека, пожалуйста, подробно опишите, как это реализовать ...
Я просто редактирую свой вопрос, теперь моя проблема в том, как получить начальную и конечную позиции от пользователя во время выполнения ....
Спасибо за ваше внимание