Я не могу получить вырезанный музыкальный файл в своем приложении

#ffmpeg

Вопрос:

Я уже могу вырезать музыкальный файл с помощью FFmpeg и сохранить его во внешнем хранилище. Но я не могу вырезать музыкальный файл, который в моем приложении для воспроизведения музыкального файла.

Я использовал этот код для вырезания музыкального файла

 private void trimMusic(long position_start, long position_end, String SONG_NAME) {  File folder = new File(Environment.getExternalStorageDirectory()   "/MusicEditor/");  folder.setReadable(true);  if (!folder.exists()) {  folder.mkdir();  }  String filePrefix = SONG_NAME;   String fileExt = ".mp3";  System.out.println("audio" fileExt);  dest = new File(folder, filePrefix   fileExt);  original_path = path;   duration = (endMs - startMs) / 1000;  filePath = dest.getAbsolutePath();   Log.d("chandoixuanduc",filePath);   command = new String[]{"-ss", ""   startMs / 1000, "-y", "-i", original_path, "-t", ""   (endMs - startMs) / 1000, "-vcodec", "mpeg4", "-b:v", "2097152", "-b:a", "48000", "-ac", "2", "-ar", "22050", filePath};  execffmpegBinary(command); }  private void execffmpegBinary(final String[] command) {  Config.enableLogCallback(new LogCallback() {  @Override  public void apply(LogMessage message) {  Log.e(Config.TAG, message.getText());  }  });   Config.enableLogCallback(new LogCallback() {  @Override  public void apply(LogMessage message) {  Log.e(Config.TAG, message.getText());  }  });   Config.enableStatisticsCallback(new StatisticsCallback() {  @Override  public void apply(Statistics newStatistics) {   }  });  Log.d(TAG, "Started command : ffmpeg "   Arrays.toString(command));    long executionId = FFmpeg.executeAsync(command, new ExecuteCallback() {  @Override  public void apply(long executionId, int returnCode) {  if (returnCode == RETURN_CODE_SUCCESS) {  // progressDialog.dismiss();  dialog.dismiss();  Toast.makeText(getActivity(), R.string.status_cut_music_sus, Toast.LENGTH_LONG).show();  Log.d("chandoixuanduc","RETURN_CODE_SUCCESS");   }  else if (returnCode == RETURN_CODE_CANCEL) {  Log.d("chandoixuanduc","RETURN_CODE_CANCEL");  }  else {  Toast.makeText(getActivity(), R.string.status_cut_music_failed, Toast.LENGTH_LONG).show();  Log.d("chandoixuanduc","RETURN_CODE_FAILED");  }  }  }); }  

И хотя я проверил это, в моем телефоне есть вырезанный музыкальный файл, но когда я проверяю весь файл mp3, я не могу получить вырезанный музыкальный файл в своем приложении.

 public Listlt;AudioModelgt; getAllAudioFromDevice(final Context context) {  final Listlt;AudioModelgt; tempAudioList = new ArrayListlt;gt;();  try {  Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;  String[] projection = {MediaStore.Audio.AudioColumns.DATA, MediaStore.Audio.AudioColumns.ALBUM, MediaStore.Audio.ArtistColumns.ARTIST,};  cursor = context.getContentResolver().query(uri,  projection,  null,  null,  null);   if (cursor != null) {  cursor.moveToFirst();  while (!cursor.isAfterLast()) {  AudioModel audioModel = new AudioModel();  String path = cursor.getString(0);  String album = cursor.getString(1);  String artist = cursor.getString(2);  String name = path.substring(path.lastIndexOf("/")   1);  Uri urisong=Uri.parse(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)));  MediaPlayer mp = MediaPlayer.create(getActivity(), urisong);  long duration=mp.getDuration();  audioModel.setaName(name);  audioModel.setaAlbum(album);  audioModel.setaArtist(artist);  audioModel.setaPath(path);  audioModel.setDuration(duration);  audioModel.setUri(urisong);  Log.d("kskskskkd",audioModel.duration " " audioModel.uri);  tempAudioList.add(audioModel);  cursor.moveToNext();  }  cursor.close();  }  }catch (Exception e){   }  return tempAudioList;  }  

Как я могу получить вырезанную музыку из файла в своем приложении ???

Комментарии:

1. Это приложение, которое вы хотите выпустить для производства, или вы будете использовать его только на одном устройстве?

2. Я хочу выпустить релиз для производства

3. Я проверяю, что в моем телефоне все еще есть вырезанный музыкальный файл. Но когда я получаю весь файл mp3 во внешнем хранилище с помощью вышеуказанного кода java, я не могу получить этот вырезанный музыкальный файл

4. Честно говоря, в твоей логике так много ошибок, что я даже не знаю, с чего начать.

Ответ №1:

Проверьте, сохранен ли он в пути к изолированной среде, поскольку запрос проблемы с разрешениями не может получить файлы в пути к изолированной среде, вы можете самостоятельно просмотреть каталог изолированной среды программного обеспечения