zoukankan      html  css  js  c++  java
  • MciSendCommand无法播放(打开)同一个文件两次

     1 使用MCI API,源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.lib。 

    2  MciSendCommand 初始化->打开->播放 一个文件后,停止->关闭->析构;二次创建,开启播放同名的这个文件的时候,是播放不了的,当你再次打开这个文件的时候会报错;

    当你使用文件名作为启动标志的时候,他只允许一个文件OPEN一次;如果想要让这个文件在开关(构造析构)之间多次播放,需要借助一个唯一标识符

    MCI_OPEN_PARMS ->lpstrAlias ->(唯一的标识,即便是两次播放用的同一个文件,但是文件标识也要不一样,并且每次播放一个文件都要一个独立不重复的标识“01123456”,诸如此类;

    如果你每次播放一个文件都是重启动程序,就不需要唯一标识,但是在程序进行中,多次播放(多次OPEN)不同的文件或者相同的文件,则需要唯一标识,这里尤其是同名文件多次open;异名文件如果每个文件只播放一次,由于文件名可以作为open的标识,所以不需要GUID这种唯一标识,因为名字本来就不重复)

    mciSendCommand OPEN的时候,使用 :MCI_OPEN_ELEMENT | MCI_OPEN_ALIAS

    构造-open【file】-playsound【MCI_PLAY】-pause-stopplay【MCI_STOP】-close -析构

    可以在网上找到一些相关GUID的代码。

     3 MciSendCommand这个命令可以播放,暂停,定位,甚至是播放视频;但是年代过于久远。不太推荐使用。因为你会发现当你播放一些网络音频时候,有的MP3它能播放,但是有些他却播放不了。尤其是帧头含有大量丰富信息的那种;

    4 https://docs.microsoft.com/zh-cn/windows/win32/multimedia/about-mci  官网

    5 如果你想连续多次播放,可以选择循环播放的命令,也可以“停止”后继续playsound 

  • 相关阅读:
    遍历指定目录及其子目录下所有文件
    vim 配置
    解决 Mendeley Linux 中文输入问题
    全角半角字符对照表
    chrome 替换多线程下载管理器
    查看系统日志
    中大东校区iNode For linux 配置笔记
    anaconda 虚拟环境笔记
    linux 网络操作
    deepin 装机
  • 原文地址:https://www.cnblogs.com/8335IT/p/14794076.html
Copyright © 2011-2022 走看看