怎么从一个avi文件中提出音频数据,并存储为wav文件
我的想法是:打开一个文件,提取音频流,打开另一个文件用于写入,对avi操作不太清楚,请指出我的代码怎么写才对
AVIFileInit();
LONG hr;
PAVIFILE fileAVI;
PAVIFILE fileWav;
PAVISTREAM audioData;
AVISTREAMINFO ainf;
CString s;
hr=AVIFileOpen(&fileAVI,"d:\\lian02.avi",OF_READ,NULL);
if(AVIFileOpen(&fileWav,"d:\\out.wav",OF_CREATE,NULL))
MessageBox("error write");
if(!hr){
switch(AVIFileGetStream(fileAVI,&audioData,streamtypeAUDIO,0)){
case AVIERR_NODATA:
MessageBox("没有数据");
break;
case AVIERR_MEMORY:
MessageBox("内存不够");
break;
default:
s.Format("%d",AVIStreamLength(audioData));
MessageBox(s);
AVIStreamInfo(audioData,&ainf,sizeof(ainf));
s.Format("%d",ainf.dwRate);
MessageBox(s);
if(AVIMakeFileFromStreams(&fileWav,NULL,&audioData))MessageBox("Error");
AVIFileWriteData(
AVIFileRelease(fileWav);
}
}
AVIFileInit();
LONG hr;
PAVIFILE fileAVI;
PAVIFILE fileWav;
PAVISTREAM audioData;
AVISTREAMINFO ainf;
CString s;
hr=AVIFileOpen(&fileAVI,"d:\\lian02.avi",OF_READ,NULL);
if(AVIFileOpen(&fileWav,"d:\\out.wav",OF_CREATE,NULL))
MessageBox("error write");
if(!hr){
switch(AVIFileGetStream(fileAVI,&audioData,streamtypeAUDIO,0)){
case AVIERR_NODATA:
MessageBox("没有数据");
break;
case AVIERR_MEMORY:
MessageBox("内存不够");
break;
default:
s.Format("%d",AVIStreamLength(audioData));
MessageBox(s);
AVIStreamInfo(audioData,&ainf,sizeof(ainf));
s.Format("%d",ainf.dwRate);
MessageBox(s);
if(AVIMakeFileFromStreams(&fileWav,NULL,&audioData))MessageBox("Error");
AVIFileWriteData(
AVIFileRelease(fileWav);
}
}
...全文
相关推荐
C++编码,24位的BMP合成avi并加载音频wav
通过多张24位的BMP和wav合成avi的功能
使用C++将BMP图片序列和WAV音频合成AVI视频
本文还有配套的精品资源,点击获取 简介:在多媒体处理和计算机图形学领域,将图像和音频文件转换成视频是一项关键任务。本项目展示了如何利用C++语言实现将24位的BMP图片序列和WAV音频文件合并成AVI格式视频文件的技术。通过理解BMP、WAV和AVI的文件格式,结合DirectShow或FFmpeg等库,可以实现图像序列的视频帧转换、同步音频样本,并将它们合并成一个视频文件...
avifile写的2个avi和一个wav合成
本工程是用于屏幕和摄像头录制完了后合成一个工程,里面的鼠标文件时自定义的,不用管就是
VC播放AVI文件的同时播放WAV文件play_avi.rar
VC播放AVI文件的同时播放WAV文件play_avi.rar visual c++同时播放.avi文件和.wav文件
15种测试视频文件和13种测试音频文件
文件包含常见的15种视频文件(avi/mp4/flv/wmv/vob/rmvb...)和13种音频文件(mp3/mp2/ogg/wav/m4a...)。长度大概在10秒左右,用于常规测试,欢迎大家下载


图形处理/算法
