我用io将一个64M的视频文件截取成了33份,每份2M,可是第一个视频播放的时候就是完整的视频的播放时间,当播放了不可能就是2M的内容的时候,就开始播放第二个视频了,第二个及其他的视频文件 暴风影音都提示说是无效文件,java代码如下:
package com.gentle.document;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFile {
public static void main(String[]args){
try {
copyFile("d:/flv/yyyyyy.mp4", "d:/flv/copy/");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**以文件流的方式复制文件
* @param src 文件源目录
* @param dest 文件目的目录
* @throws IOException
*/
public static void copyFile(String src,String copyPath) throws IOException{
FileInputStream in=new FileInputStream(src);
File file=new File(src);
String fileName=file.getName().substring(0,file.getName().lastIndexOf("."));
System.out.println(fileName);
int c;
FileOutputStream out=null;
int index=1;
byte buffer[]=new byte[1024];
File newFile=createNewFile(copyPath, fileName, index);
System.out.println(newFile.getAbsolutePath());
out=new FileOutputStream(newFile);
while((c=in.read(buffer))!=-1){
if(newFile.length()==1024*1024*2){
index++;
newFile=createNewFile(copyPath, fileName, index);
out.close();
out=new FileOutputStream(newFile);
}else{
for(int i=0;i<c;i++){
out.write(buffer[i]);
}
}
}
in.close();
}
public static File createNewFile(String copyPath,String fileName,int index){
File file=new File(copyPath+fileName+index+".mp4");
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
}
请高手解答!谢谢
------解决方案--------------------
视频是有特定的格式的,你把一个二进制的视频文件,强制的分成几份,格式被破坏了,当然没法播放了
------解决方案--------------------
如果用随机流来拆分文件呢?
------解决方案--------------------
video encoding format : header & meta data format
------解决方案--------------------
视频文件有头部信息的,不同的视频格式也不同。
http://www.vckbase.com/document/viewdoc/?id=1464
------解决方案--------------------
------解决方案--------------------
我先过来混个1分走人啊 谢谢了啊
------解决方案--------------------
将头部信息取出来,把每份都加上一份头部信息,应该可以播放了
------解决方案--------------------