如何合并一个音频文件与视频文件(200分)

  • 主题发起人 主题发起人 zhanghao73
  • 开始时间 开始时间
Z

zhanghao73

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个音频文件,后缀是wav的,还有一个视频文件文件,后缀是mpv,视频文件中没有声音,现在要将两个文件合成一个文件,那位大大知道怎么办啊?
 
MPV就不知道是什么.要是AVI的话还好办
 
mpv可以当成是一个mpg格式的文件处理
 
几年前读大一的时候搞过,Very麻烦.需要对文件格式Very了解.MPV实际上是没有声音的mpg文件:

/////////////////////////////////////////////////////////////////////////////////
//START CODE DEFINE
/////////////////////////////////////////////////////////////////////////////////
const SEQUENCE_HEADER_START_CODE =$000001B3;
const SEQUENCE_END_CODE =$000001B7;
const GROUP_START_CODE =$000001B8;
const ISO_11172_END_CODE =$000001B9;
const PACK_START_CODE =$000001BA;
const SYSTEM_HEADER_START_CODE =$000001BB;
const PADDING_START_CODE =$000001BE;
const MPEG_AUDIO_STREAM_0 =$000001C0;
const MPEG_VIDEO_STREAM_0 =$000001E0;

/////////////////////////////////////////////////////////////////////////////////
//RIFF/CDXA CODE DEFINE
/////////////////////////////////////////////////////////////////////////////////
const CDXA_SECTOR_SIZE =$930;
const CDXA_SECTOR_START_CODE :TGUID=
(D1:$FFFFFF00;
D2:$FFFF;
D3:$FFFF;
D4: ($FF, $FF, $FF, $00, $00, $00, $00, $00 ));


/////////////////////////////////////////////////////////////////////////////////
//MPEG1 AUDIO BIT RATE DEFINE
/////////////////////////////////////////////////////////////////////////////////
MPEG1LAYER1:array[0..14] of DWORD =(0,32,64,96,128,160,192,224,256,288,320,352,384,416,448);
MPEG1LAYER2:array[0..14] of DWORD =(0,32,48,56,64,80,96,112,128,160,192,224,256,320,384);
MPEG1LAYER3:array[0..14] of DWORD =(0,32,40,48,56,64,80,96,112,128,160,192,224,256,320);


1:PACK_START_CODE===>MPG
2:SEQUENCE_HEADER_START_CODE===>MPV
3:'RIFF'+4(#20)+ 'CDXA'=DAT

then
//Parse RIFF/CDXA Header
begin

Inc(dwCount, 4);
//"RIFF"
Inc(dwCount, 4);
//File Size
Inc(dwCount, 4);
//"CDXA"
Inc(dwCount, 4);
//"fmt "
dwSize :=(pData + dwCount);
Inc(dwCount, 4);
//Header Size

Inc(dwCount, dwSize);
//Size body
Inc(dwCount, 4);
//"data"
dwSize := GetDWORD(pData + dwCount);
Inc(dwCount, 4);
//data_size
....
 
有没有完整的例子啊,最好是用Dspack的,我的邮箱是h_zh@tom.com,先谢谢了
 
可以用directshow的现成的filter来做啊,
[file reader:xxx.mpv]-------------------[avi mux]->[xxx.avi]
[file reader:xxx.wav]->[wav parser]-----
用graphedit建一个象上面那样建一个filter graph就可以了,不过影音同步就不一定能保证了。
关于directshow方面的东西可以去看下我的blog
----------------------------------------------------------------------------
快乐的四眼,欢迎访问我的技术博客:http://eyes4.mblogger.cn
 
我也看看了DIRECTSHOW的书,不过都是C++的码,俺看不大明白啊,有没有DELPHI的用法说明啊,那位大大结提供一下,谢谢了!
 
所以说,学delphi 一定还要学 c/c++ . 否则就向Ls ,看不懂了吧. [:)]
 
后退
顶部