免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1293 | 回复: 2
打印 上一主题 下一主题

[C++] mci 播放wave文件不成功 [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-12 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-09-11 18:42 |只看该作者 |倒序浏览
本帖最后由 yakczh_cu 于 2016-09-11 18:43 编辑


  1. #include <stdio.h>   
  2. #include <Windows.h>
  3. #include "mmsystem.h"   
  4. #pragma comment(lib, "winmm.lib")   



  5. int main()  
  6. {
  7.     UINT wDeviceID;
  8.     DWORD dwReturn;
  9.     MCI_OPEN_PARMS mciOpenParms;
  10.     MCI_PLAY_PARMS mciPlayParms;

  11.     //***************************************************************************
  12.     mciOpenParms.lpstrDeviceType = "WaveAudio";
  13.     mciOpenParms.lpstrElementName ="44.wav";

  14.     if (dwReturn = mciSendCommand(0, MCI_OPEN,//这里是打开wave设备
  15.                 MCI_OPEN_ELEMENT|MCI_OPEN_TYPE,
  16.                 (DWORD)(LPVOID) &mciOpenParms))
  17.     {
  18.         // Failed to open device; don't close it, just return error.
  19.         char buffer[100];
  20.         mciGetErrorString(dwReturn, buffer,sizeof(buffer));
  21.         printf("error -> %s",buffer);
  22.     }

  23.     if (dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY,
  24.                 (DWORD)(LPVOID) &mciPlayParms))
  25.     {
  26.         mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
  27.         return (dwReturn);
  28.     }


  29.     return 0;  
  30. }  


复制代码

运行也不报错,但也没有声音,wav文件是存在的 用midiaplay可以播放

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
2 [报告]
发表于 2016-09-12 08:44 |只看该作者
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <mmsystem.h>
  4. #pragma comment(lib, "winmm.lib")

  5. const char* MciGetErrorString( DWORD MciReturn )
  6. {
  7.     static char buffer[128];
  8.     mciGetErrorStringA( MciReturn, buffer, sizeof(buffer) );
  9.     return buffer;
  10. }

  11. int main( void )
  12. {
  13.     MCI_OPEN_PARMSA mciOpenParms;
  14.     mciOpenParms.lpstrDeviceType = "WaveAudio";
  15.     mciOpenParms.lpstrElementName = "44.wav";
  16.     DWORD dwReturn = mciSendCommandA( 0, MCI_OPEN, MCI_OPEN_ELEMENT|MCI_OPEN_TYPE, (DWORD_PTR)&mciOpenParms );
  17.     if( dwReturn != 0 )
  18.         printf( "error -> %s\n", MciGetErrorString(dwReturn) );
  19.     else
  20.     {
  21.         dwReturn = mciSendCommand( mciOpenParms.wDeviceID, MCI_PLAY, MCI_WAIT, NULL );
  22.         if( dwReturn != 0 )
  23.             printf( "error -> %s\n", MciGetErrorString(dwReturn) );

  24.         mciSendCommand( mciOpenParms.wDeviceID, MCI_CLOSE, 0, NULL );
  25.     }

  26.     return dwReturn==0;
  27. }
复制代码

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-12 06:20:00
3 [报告]
发表于 2016-09-12 21:50 |只看该作者
本帖最后由 yakczh_cu 于 2016-09-12 21:56 编辑

回复 2# bruceteen
再请教一下,我装了个虚拟声卡,这样可以用程序实现内录电脑中的音频数据,但是要录音首先把默认播放设备设置成虚拟声卡, 要听录音文件效果的时候再把默认播放设备切换成扬声器, 有没有办法可以录音的时候实现就实现播放声音文件到耳机(或者其他设备) ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP