我正在开发一个Android项目,需要我将视频文件分成几个部分(比如每个5 MB),然后单独播放这些部分。我已成功将视频分割成部分,但这些部分没有播放。(可能缺少播放器识别的一些播放属性)。如果有人可以提供关于如何在代码的上下文中不合并(我的项目所必需)的方式来播放这些单独部分的解决方案。 PS。不能使用任何第三方软件制作Android应用程序。
public static void splitFile(File f) {
int partCounter = 1;//I like to name parts from 001, 002, 003, ...
//you can change it to 0 if you want 000, 001, ...
int sizeOfFiles = 1024 * 1024 * 10;// 10MB
byte[] buffer = new byte[sizeOfFiles];
try (BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(f))) {//try-with-resources to ensure closing stream
String name = f.getName();
int tmp = 0;
while ((tmp = bis.read(buffer)) > 0) {
//write each chunk of data into separate file with different number in name
File newFile = new File(f.getParent(), name + "."
+ String.format("%03d", partCounter++)+".mp4");
try (FileOutputStream out = new FileOutputStream(newFile)) {
out.write(buffer, 0, tmp);//tmp is chunk size
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
[ /storage/emulated/0/1493357699.mp4.001, /storage/emulated/0/1493357699.mp4.002, /storage/emulated/0/1493357699.mp4.003, /storage/emulated/0/1493357699.mp4.004, /storage/emulated/0/1493357699.mp4.005, /storage/emulated/0/1493357699.mp4.006, /storage/emulated/0/1493357699.mp4.007, /storage/emulated/0/1493357699.mp4.008 ]
答案 0 :(得分:0)
使用FFMPEG库分割视频。你的分裂方法可能是损坏视频。 FFMPEG
不会发生这种情况ffmpeg -i INPUT.mp4 -acodec copy -f segment -vcodec copy -reset_timestamps 1 -map 0 OUTPUT%d.mp4