Я сталкиваюсь с проблемой, когда при использовании внешней библиотеки ( ссылка ) и записи нового файла MP4 он не воспроизводится на нескольких проигрывателях, но полностью воспроизводится на других.
Теоретически, он должен быть сразу воспроизводим на всех них, но это не так. Я создаю видео файл так:
String timeStamp = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss",
Locale.getDefault()).format(new Date());
String imageFileName = "MyApp_" + timeStamp + "";
File video;
File storageDir = getExternalFilesDir(Environment.DIRECTORY_MOVIES);
try {
if(this.saveVideoToGallery){
storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
if(!storageDir.exists()){
boolean createdFolder = false;
try {
createdFolder = storageDir.mkdir();
} catch (Exception e){
e.printStackTrace();
}
if(!createdFolder){
storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
}
}
video = new File(storageDir, imageFileName + ".mp4");
} else {
if(!storageDir.exists()) {
try {
storageDir.mkdir();
} catch (Exception e) {}
}
video = File.createTempFile(
imageFileName, /* prefix */
".mp4", /* suffix */
storageDir /* directory */
);
}
} catch (IOException ioe){
ioe.printStackTrace();
video = new File(storageDir + imageFileName + ".mp4");
}
Обратите внимание, что логическое значение
saveVideoToGallery
Это просто настраиваемая глобальная переменная, которая позволяет выполнять запись во внешний каталог.