首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

mciSendString播放音乐文件的有关问题

2013-07-16 
mciSendString播放音乐文件的问题我想做的是根据按键来播放对应的mp3文件,所以我做了这样的事情:循环去调

mciSendString播放音乐文件的问题
我想做的是根据按键来播放对应的mp3文件,
所以我做了这样的事情:循环去调用mciSendString,其中打开各个mp3文件,
代码是
sprintf(sz_command, "open %c.mp3 alias key_%c", 'A' + i, 'A' + i);
然后在程序中根据按键来播放,可是发现一个问题,比如按A播放了A.mp3后,再按A就不出声了。

第二个问题,按一个键播放了,再按其他键继续播放别的声音,这个时候明显能听到声音播放破音了

请问,如何解决?
[解决办法]
音乐播放器 我也接触过。
第一个问题第二个问题的方案都一样
我可以采用 在播放前把当前的音乐先停掉。
if(同一首歌)
{
send(暂停播放)
}
else 
{
send(停止播放)
send(播放当前)
}
[解决办法]
1、open的时候不需要alias任何按键,按键事件自己处理,MCI只负责单纯的Player
2、按键事件来的时候,先close当前的音乐播放,然后再开始新的音乐播放

引用:
我想做的是根据按键来播放对应的mp3文件,
所以我做了这样的事情:循环去调用mciSendString,其中打开各个mp3文件,
代码是
sprintf(sz_command, "open %c.mp3 alias key_%c", 'A' + i, 'A' + i);
然后在程序中根据按键来播放,可是发现一个问题,比如按A播放了A.mp3后,再按A就不出声了。

第二个问题,按一个键播放了,再按其他键继续播放别的声音,这个时候明显能听到声音播放破音了

请问,如何解决?

[解决办法]
是的,需要重新open

引用:
不知道您说的alias按键是什么意思?alias后面跟的不是一个别名吗?
另,如果close了,是不是还要重新打开呢?
因为我发现open的过程很费时啊。
Quote: 引用:

1、open的时候不需要alias任何按键,按键事件自己处理,MCI只负责单纯的Player
2、按键事件来的时候,先close当前的音乐播放,然后再开始新的音乐播放

Quote: 引用:

我想做的是根据按键来播放对应的mp3文件,
所以我做了这样的事情:循环去调用mciSendString,其中打开各个mp3文件,
代码是
sprintf(sz_command, "open %c.mp3 alias key_%c", 'A' + i, 'A' + i);
然后在程序中根据按键来播放,可是发现一个问题,比如按A播放了A.mp3后,再按A就不出声了。

第二个问题,按一个键播放了,再按其他键继续播放别的声音,这个时候明显能听到声音播放破音了

请问,如何解决?

[解决办法]
播放每个新mp3前请先stop并close前一个mp3
[解决办法]
加一个判断就好了,如果是同样的话,那么就不进行任何操作。

引用:
重新open开销太大了。。。
我找到一个办法,就是seek to start,这样可以播放了
只是连续播放同一个键音的话,前面还没放完就seek to start了,导致中断


如何能够连贯点呢?

Quote: 引用:

是的,需要重新open

Quote: 引用:

不知道您说的alias按键是什么意思?alias后面跟的不是一个别名吗?
另,如果close了,是不是还要重新打开呢?
因为我发现open的过程很费时啊。
Quote: 引用:

1、open的时候不需要alias任何按键,按键事件自己处理,MCI只负责单纯的Player
2、按键事件来的时候,先close当前的音乐播放,然后再开始新的音乐播放

Quote: 引用:

我想做的是根据按键来播放对应的mp3文件,
所以我做了这样的事情:循环去调用mciSendString,其中打开各个mp3文件,
代码是
sprintf(sz_command, "open %c.mp3 alias key_%c", 'A' + i, 'A' + i);
然后在程序中根据按键来播放,可是发现一个问题,比如按A播放了A.mp3后,再按A就不出声了。

第二个问题,按一个键播放了,再按其他键继续播放别的声音,这个时候明显能听到声音播放破音了

请问,如何解决?

热点排行