日期:2014-05-20  浏览次数:20759 次

io流截取视频的问题
我用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
------解决方案--------------------
探讨

视频文件有头部信息的,不同的视频格式也不同。
http://www.vckbase.com/document/viewdoc/?id=1464

------解决方案--------------------
我先过来混个1分走人啊 谢谢了啊
------解决方案--------------------
将头部信息取出来,把每份都加上一份头部信息,应该可以播放了

------解决方案--------------------
探讨

将头部信息取出来,把每份都加上一份头部信息,应该可以播放了