更多语音提示资料,阅读:为自己的软件添加语音提示功能

实现了一个类,该类提供播放音频文件功能

获得音频文件路径:

void  PlayAudio::GetDataPath(string path, string& lsFile)
{CFileDialog dlg(TRUE,_T("报警音频 (*.mp3)|*.mp3"),NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ENABLESIZING,//_T("报警音频 (*.mp3)|*.mp3|报警音频 (*.wav)|*.wav||"),_T("报警音频 (*.mp3)|*.mp3||"),NULL);dlg.m_ofn.lpstrTitle = "选择报警音频文件";string strpath = path;dlg.m_ofn.lpstrInitialDir = strpath.c_str();//显示文件对话框,获得文件名集合if (dlg.DoModal() != IDOK)return;lsFile =StringAbout::toString( dlg.GetPathName());}

调用demo:

PLAYAUDIO("采集完成.wav");

类的源代码:

PlayAudio.cpp

#include "stdafx.h"
#include "PlayAudio.h"
#include <mmSystem.h>
#include "MyDirectory.h"
#include "StringAbout.h"#include<Mmsystem.h>
#pragma comment(lib,"winmm.lib")CPlayAudio *CPlayAudio::m_play = NULL;
CMutex *CPlayAudio::m_mutex = new CMutex();CPlayAudio::CPlayAudio()
{CMyDirectory mydir;CString modulePath = mydir.GetCurrentPath();m_modulepath = StringAbout::toString(modulePath);num = 1;
}CPlayAudio::~CPlayAudio()
{if (m_mutex != NULL){delete m_mutex;m_mutex = NULL;}if (m_play != NULL){delete m_play;m_play = NULL;}
}void  CPlayAudio::SetAudioPath(std::string path)
{ m_audiopath = path;
}
void  CPlayAudio::OpenAudio(string filename)
{m_audiopath = m_modulepath + filename;bool isExist = PathFileExists((CString)m_audiopath.c_str());if (isExist){OnPlaySound();}else{if (num == 1){num++;::MessageBox(NULL, L"报警音频文件不存在", L"提示框", MB_OK | MB_ICONERROR);}return;}
}
void  CPlayAudio::OnPlaySound()
{int pos = m_audiopath.rfind(".");std::string sType = m_audiopath.substr(pos + 1, m_audiopath.length() - pos - 1);if (sType == "wav"){PlaySound((CString)m_audiopath.c_str(), NULL, SND_FILENAME | SND_ASYNC);}if (sType == "mp3"){MCI_OPEN_PARMS m_mciOpen;  //打开参数MCI_PLAY_PARMS m_mciPlay;  //播放参数//要操作的文件类型m_mciOpen.lpstrDeviceType = L"mpegvideo";//要操作的文件路径m_mciOpen.lpstrElementName = L"F:\\20170405频段扫描黑名单显示与声音提示\\Alarm.mp3";//m_mciOpen.lpstrElementName =(CString)m_audiopath.c_str();CString name;name.Format(L"alarm%d", rand());m_mciOpen.lpstrAlias = name;MCIERROR mcierror = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT | MCI_OPEN_ALIAS, (DWORD)&m_mciOpen); //打开文件命令if (mcierror) {TCHAR buf[128] = { 0 };mciGetErrorString(mcierror, buf, 128);::MessageBox(NULL, (CString)buf, L"错误", MB_OK | MB_ICONERROR);mciSendCommand(m_mciOpen.wDeviceID, MCI_CLOSE, NULL, NULL);}else {m_mciPlay.dwCallback = NULL;//播放起始位置ms为单位m_mciPlay.dwFrom = (DWORD)(12 * 1); mciSendCommand(m_mciOpen.wDeviceID, MCI_PLAY, MCI_NOTIFY | MCI_FROM, (DWORD)(LPVOID)&m_mciPlay);}}
}CPlayAudio * CPlayAudio::GetInstance()
{if (m_play != NULL){return m_play;}else{m_mutex->Lock();if (m_play == NULL){m_play = new CPlayAudio();       }m_mutex->Unlock();return m_play;}}

PlayAudio.h

#pragma once
#include <string>
#include "afxmt.h"
using namespace std;#define PLAYAUDIO CPlayAudio::GetInstance()->OpenAudioclass CPlayAudio
{
public:CPlayAudio();~CPlayAudio();
private:std::string m_audiopath;std::string m_modulepath;int num;
public:static CPlayAudio *m_play;static CMutex *m_mutex;
protected:void  OnPlaySound();
public:static CPlayAudio *GetInstance();void  OpenAudio(string filename);void  SetAudioPath(std::string path);
};

C++播放音频mav文件和mp3文件相关推荐

  1. 采用FFmpeg从视频中提取音频(声音)保存为mp3文件

    采用FFmpeg从视频中提取音频(声音)保存为mp3文件 作者:雨水,日期:2016年1月9日 CSDN博客:http://blog.csdn.net/gobitan 摘要:看到好的视频文件,如果想把 ...

  2. android 录音的格式转换,Android仿微信录音功能(录音后的raw文件转mp3文件)

    现在很多时候需要用到录音,然后如果我们的App是ios和android两端的话,就要考虑录音的文件在两端都能使用,这个时候就需要适配,两端的录音文件都要是mp3文件,这样才能保证两边都能播放. 针对这 ...

  3. 语音amr文件转换为mp3文件

    1.安卓前端生成amr语音文件,经过base64加密变成加密字符串 2.把加密后的字符串解密成amr文件 生成amr文件目录   String fileUrl = System.getProperty ...

  4. Java使用ffmpeg合并多个视频文件、mp3文件

    /*** 合并多个视频文件.mp3文件*/@Testpublic void mergeFile(){// 合并命令String commit = "$0 -f concat -safe 0 ...

  5. 如何将微信amr文件转换为mp3文件

    本篇经验将介绍,如何将微信的amr文件转换为mp3文件. 工具/原料 电脑 电脑软件:silk2mp3 amr文件 方法/步骤 下载软件,解压. 进入以下目录,打开软件. silk-v3-decode ...

  6. Android使用LAME将pcm文件转mp3文件

    Android使用LAME将pcm格式转mp3格式 lame介绍:LAME是一款开源的MP3编码器,被认为是中高比特率和VBR的最佳MP3编码器,质量和速度方面的改进仍在继续,可能使LAME成为仍在积 ...

  7. 医用设备心跳心率检测mp3文件输出(mp3文件处理)(二)

    本系统是通过一套国外先进的医用设备将用户心跳心率存储到 mp3文件中, 该软件系统由于日本以非常高的价格出售, 公司决定由我破译硬件数据,开发一套替换日本软件产品.  该项目共花费2个月时间完成.   ...

  8. android 视频转音频,将mp4文件转换为mp3文件的方法

    很多文章关于将MP4转为MP3写的都很复杂,我这里总结一个比较简单的方法.此方法有个BUG,最后再说.但整体功能比较简单可用. 一,导入第三方文件 此方法用到3个第三方库文件如下,(资源和Demo在文 ...

  9. c# m4a文件转mp3文件 【.net】

    我的需求是手机上传录音.客户因手机上传的文件是m4a录音文件,按需求方要求,只要是m4a文件统一转成mp3格式上传,并且保留m4a格式文件.这两种方法跟自己业务有关,希望能帮到相同业务需求的朋友 第一 ...

最新文章

  1. 调整数组顺序使奇数位于偶数的前面
  2. Spring boot+Spring Security 4配置整合实例
  3. 使用互联网了解的两个月里_我两个月来对Quarkus的了解
  4. R语言处理非线性回归模型C-D方程,使用R语言进行多项式回归、非线性回归模型曲线拟合...
  5. linux系统需要备份吗,准备好了吗?请备份你的Linux系统
  6. NLP《词汇表示方法(七)BERT》
  7. 今天中午处理的一笔数据真的是好纠结 好心惊胆战
  8. linkedin api php,php – 如何使用linkedin api发送消息/通知?
  9. k8s核心技术-Pod(调度策略)_创建Pod流程_比如一个nginx的Pod创建后如何被分配到某个节点上---K8S_Google工作笔记0024
  10. 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
  11. 深度学习:词嵌入Embedding
  12. CentOS 7.6 配置VNC远程访问服务器图形界面
  13. Si4438, Si4432, Sx1278, Sx1276, Sx1212无线数传模块简单介绍
  14. 温度、水汽压、湿度计算公式
  15. 91卫图助手免费获取高清影像
  16. 麦肯锡卓越工作方法 读书体会
  17. matlab 元胞数组
  18. 计算机计算资产分析表,财务指标计算器.xls
  19. Granger Causality 格兰杰因果关系
  20. jQuery诞生记-原理与机制

热门文章

  1. 百度cdn深度优化配置
  2. 《痞子衡嵌入式半月刊》 第 65 期
  3. python Excel xlwt 富文本 同一单元格内设置不同样式
  4. python socket发包_python 多线程tcp udp发包 Dos工具。
  5. 百度地图获取本地搜索(LocalSearch)全部结果并显示标注
  6. vlookup使用步骤_vlookup函数怎么使用_vlookup函数的使用方法及实例 - 系统家园
  7. keras学习-循环层Recurrent-包装器Wrapper-自己的
  8. Python数据类型——元祖
  9. BigBrother的大数据之旅Day 11 hive(2)
  10. 基于艾宾浩斯遗忘曲线的APP(大学毕业设计)