我遇到一个问题,在使用外部库(link)并编写新的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
只是一个可配置的全局变量,它允许写入外部目录。
答案 0 :(得分:1)
事实证明,问题与命名架构/文件名逻辑有关。我本来就是这样写我的名字的:
String timeStamp = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss",
Locale.getDefault()).format(new Date());
但是当我删除冒号(':')并改用下划线(“ _”)时,
String timeStamp = new SimpleDateFormat("yyyy-MM-dd-HH_mm_ss",
Locale.getDefault()).format(new Date());
它解决了该问题。