熟悉MPEG截取的朋友进(100分)

  • 主题发起人 主题发起人 白色的泷
  • 开始时间 开始时间

白色的泷

Unregistered / Unconfirmed
GUEST, unregistred user!
最近看一段MPEG截取的代码,如下
function TfrmVidioEdit.My_CutMpegFile(SourceFile,DestFile:String;StartTime,TimeLength:integer):Boolean;
const MyTimeFramSize=2324*65;
var
MyMpegFile:TFileStream;
MyMemFile:TMemoryStream;
begin
Result:=True;
MyMpegFile:=TFileStream.Create(SourceFile,fmOpenRead or fmShareDenyNone);
MyMemFile:=TMemoryStream.Create;
try
try
MyMemFile.CopyFrom(MyMpegFile,2324);
MyMpegFile.Seek(MyTimeFramSize*StartTime,soFromBeginning);
MyMemFile.CopyFrom(MyMpegFile,MyTimeFramSize*TimeLength);
MyMemFile.SaveToFile(DestFile);
finally
MyMemFile.Free;
MyMpegFile.Free;
end;
except
Result:=False;
end;
end;

小弟有几个问题
1,MyTimeFramSize=2324*65;这个常量代表什么。好像mpeg每个 sector 可存 2324 bytes
2,为什么首先要MyMemFile.CopyFrom(MyMpegFile,2324);
谢谢
 
~~在线等待
 
~~在线等待
 
2324*65表示每秒钟的播放的流量
现在求助 MPEG的头文件应该截取多少
MyMemFile.CopyFrom(MyMpegFile,2324);截取的头文件不对
 
在线等待
 
那个好像是Mpeg的头信息.不一定是2324吧.不记得了,那文章写了很久了,应该是大学时写的吧.不过如果是纯MPEG文件,上面的方法肯定是OK的了.除非你的是DAT文件.
 
后退
顶部