c++ - 如何从特定点(例如 30 秒)播放 .wav 文件
问题描述
我希望能够在复制广播电台的程序中的特定时间(例如,歌曲开始播放 30 秒)开始播放歌曲,当您更改频道并且歌曲已经播放或即将播放完毕时。
目前我使用 PlaySound 并将我的 26 首歌曲保存为 wav 文件和程序中的资源。我已经将 mciSendString 视为一个选项,但是我不明白在使用 Windows API 和 C++ 编码时如何设法让它工作。
这是我当前的 PlayWavFile 函数(其中资源整数是从 0 到 25 的随机生成的数字,投射到此函数以播放随机歌曲):
void PlayWavFile(int resource) {
PlaySound(MAKEINTRESOURCE(resource), hInst, SND_RESOURCE | SND_ASYNC);
}
我希望能够使用我预先确定的整数值(如持续时间)以某种方式播放歌曲。
解决方案
我已经将 mciSendString 视为一个选项,但是我不明白在使用 Windows API 和 C++ 编码时如何设法让它工作。
您可以阅读 MSDN 文档,例如Multimedia Command Strings,了解命令的语法
从 1 秒开始读取 wav 文件的基本示例 =>
int rc = mciSendString(L"open E:\\test.wav alias wav1", NULL, 0, 0);
if (rc == 0)
{
rc = mciSendString(L"set wav1 time format ms", NULL, 0, 0);
rc = mciSendString(L"seek wav1 to 1000", NULL, 0, 0);
if (rc == 0)
{
rc = mciSendString(L"play wav1", NULL, 0, 0);
}
else
{
// handle error (like MCIERR_OUTOFRANGE for example)
}
}
else
{
// handle error
}
推荐阅读
- python - Python 加载文本
- shell - 解析两个字符串之间的 CSV 数据并包含下一行中的字符串
- python - python用条件重新编码csv
- javascript - 使用 javascript 显示/隐藏 div 并在运行 javascript 后保留隐藏的 div 块
- powershell - Powershell 中 CSV 的时间去抖动过滤器
- python - Flask_Assets 不从 sass 导出 css
- python - ValueError:发现样本数量不一致的输入变量:[645471, 78]
- react-native - 在 react-native 中保护敏感数据的最佳方法是什么?
- php - 尝试更新 MySQLi 列时未加载 Wordpress wp_user 对象变量
- java - 如何增加等待 couchbase Query 服务启动的超时时间