VC中怎样截取音频(如wave格式)中自己想要的部分并保存?

Hunter-狩猎者 2006-04-01 11:21:26
VC中怎样截取音频中自己想要的部分并保存?
在vc中怎样才能截取音频(wave)中的一段并保存成文件
...全文
770 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluesen 2006-04-14
  • 打赏
  • 举报
回复
到MSDN去了解一下wave文件的头格式就好了,我觉得线性PCM格式是很简单的,更何况你这个还不涉及具体的语音格式。
taianmonkey 2006-04-12
  • 打赏
  • 举报
回复
然后使用dshow中的IMediaSeeking来获取媒体的位置,长度等信息,然后将LONGLONG的时间转为相应的秒,就是/1000*10000,这是只是大体的思路!
考虑直观性,还要把声音的波形绘制出来,可以参考DXSDK\Samples\C++\DirectShow\Filters\Grabber
taianmonkey 2006-04-12
  • 打赏
  • 举报
回复
首先将指针定位到wav的开头:
m_hmmio = mmioOpen((LPSTR)(LPCTSTR)m_strFilePath,NULL,MMIO_READ);
if(!m_hmmio)
{
AfxMessageBox("unable to open Sound MM File");
return ;
}
m_MMCkInfoParent.fccType = mmioFOURCC('W','A','V','E');
int errorCode = mmioDescend(m_hmmio, &m_MMCkInfoParent,NULL,MMIO_FINDRIFF);
if(errorCode)
{
AfxMessageBox("Error descending into file");
mmioClose(m_hmmio,0);
m_hmmio = NULL;
return ;
}
m_MMCkInfoChild.ckid = mmioFOURCC('f','m','t',' ');
errorCode = mmioDescend(m_hmmio,&m_MMCkInfoChild,&m_MMCkInfoParent,MMIO_FINDCHUNK);
if(errorCode)
{
AfxMessageBox("Error descending in file");
mmioClose(m_hmmio,0);
m_hmmio = NULL;
return ;
}
DWORD bytesRead = mmioRead(m_hmmio,(LPSTR)&m_PCMWaveFmtRecord,m_MMCkInfoChild.cksize);
if(bytesRead < 0)
{
AfxMessageBox("Error reading PCM wave format record");
mmioClose(m_hmmio,0);
return ;
}
jeapvan 2006-04-10
  • 打赏
  • 举报
回复
你那个打开方式是什么呀,怎么在MSDN都查不到呀?
DoItFreely 2006-04-10
  • 打赏
  • 举报
回复
用audicy打开,copy & paste, 保存就好了
用vc……你怎么确定需要哪部分的?
如果知道从哪到哪,除去wave文件头,计算偏移,然后readfile出来就可以了
jeapvan 2006-04-05
  • 打赏
  • 举报
回复
我也想知道,如何提取WAVE文件中的数据?????
谁有相关的例子或相关的资料呀??
lvyao1011 2006-04-04
  • 打赏
  • 举报
回复
把你要截取的数据断取出来,重新写成WAV文件不就可以了嘛,记得修改文件头信息
lisypro 2006-04-04
  • 打赏
  • 举报
回复
调用其它程序提供的API吧

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧