怎么将MP3转成WAV(用directshow)

xyhshen 2009-01-12 04:29:47
这是我在论坛上找的一段代码,可是运行后没反应

bool mp3towav()
{
CoInitialize(0);
HRESULT hr;
IGraphBuilder *pGB = NULL;
hr=CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**)&pGB);
IBaseFilter *pFileReader = NULL;
IBaseFilter *pMpeg1Stream= NULL;
IBaseFilter *pMp3Decoder = NULL;
IBaseFilter *pWaveDest = NULL;
IBaseFilter *pFileWriter = NULL;
IFileSinkFilter* pSink = NULL;
IPin *pin = NULL;
IPin *pOut = NULL;
if (FAILED(hr))return false;
hr = CoCreateInstance(CLSID_AsyncReader,NULL,CLSCTX_INPROC_SERVER,IID_IBaseFilter,(void**)&pFileReader);

hr = CoCreateInstance(CLSID_MPEG1Splitter, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&pMpeg1Stream);
hr = CoCreateInstance(CLSID_MP3Decoder, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&pMp3Decoder);
hr = CoCreateInstance(CLSID_WavDest, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&pWaveDest);
hr = CoCreateInstance(CLSID_FileWriter, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&pFileWriter);
//if (FAILED(hr))return false;
pFileWriter->QueryInterface(IID_IFileSinkFilter, (void**)&pSink);
pSink->SetFileName(L"b.wav", NULL);
pSink->Release();

hr = pGB->AddSourceFilter(L"a.mp3",NULL,&pFileReader);
hr = pGB->AddFilter(pFileReader,NULL);
hr = pGB->AddFilter(pMpeg1Stream, NULL);
hr = pGB->AddFilter(pMp3Decoder, NULL);
hr = pGB->AddFilter(pWaveDest, NULL);
hr = pGB->AddFilter(pFileWriter, NULL);

hr = pFileReader->FindPin(L"Output", &pOut);
hr = pMpeg1Stream->FindPin(L"Input", &pin);
hr = pGB->Connect(pOut, pin);
hr = pMpeg1Stream->FindPin(L"Audio", &pOut);

hr = pMp3Decoder->FindPin(L"In", &pin);

hr = pGB->Connect(pOut, pin);
hr= pMp3Decoder->FindPin(L"Out", &pOut);
hr= pWaveDest->FindPin(L"In",&pin);

hr= pGB->Connect(pOut,pin);
hr= pWaveDest->FindPin(L"Out", &pOut);
hr= pFileWriter->FindPin(L"in",&pin);

hr= pGB->Connect(pOut,pin);
//pGB->ConnectDirect(pOut,pin,

pFileReader->Release();
pMpeg1Stream->Release();
pMp3Decoder->Release();
pWaveDest->Release();
pFileWriter->Release();
return true;
}
...全文
747 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckyboy101 2009-03-18
  • 打赏
  • 举报
回复
用graphedit看看
hyzkui 2009-03-17
  • 打赏
  • 举报
回复
请问老弟你试过中音改变wav的音频格式没有?我的qq81941578
xyhshen 2009-01-15
  • 打赏
  • 举报
回复
...................原来FILTER没运行
SoftSoftSoft2008 2009-01-13
  • 打赏
  • 举报
回复
可以用ffmpeg解码,
UDX协议 2009-01-13
  • 打赏
  • 举报
回复
判断每个hr的返回值,文件是否存在等。

2,541

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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