有没有比 mciSendString 更好的播放 Mp3 的方法?

Posted

技术标签:

【中文标题】有没有比 mciSendString 更好的播放 Mp3 的方法?【英文标题】:is there any better way to play Mp3 than mciSendString? 【发布时间】:2019-04-28 03:05:32 【问题描述】:

mciSendString 很烂,很难在多线程中使用,例如很难获得当前的 PlayingState

【问题讨论】:

***.com/q/4019733/362536 询问“更好的方式” 而不解释,“更好” 是什么,将把这个问题作为主要基于意见的问题关闭。请简要说明您需要什么,以及为什么您认为您当前的方法无法实现。请记住,多线程困难的,无论你如何处理它。 MciSendString 对于多线程来说真的很糟糕。如果你只是想实时混音,你可以使用 DirectSound,但目前这个功能只能应用于旧程序。相比之下,使用新的 XAudio2 是一个不错的选择。 【参考方案1】:

我建议使用 DirectShow 或 Windows Media Foundation,因为它们都有灵活的 API 用于基于文件的播放(您不必处理读取文件和理解格式、查找编解码器等)并且仍然公开播放控制.请参阅这些文章:

    DirectShow 和 IGraphBuilder(非常简单直接) - How To Play a File How to Play Media Files with Media Foundation Link to example from the first link

【讨论】:

以上是关于有没有比 mciSendString 更好的播放 Mp3 的方法?的主要内容,如果未能解决你的问题,请参考以下文章

mciSendString播放音乐

mcisendstring播放mp3

用mciSendString播放音频时怎么停止播放

VB mcisendstring让音乐循环播放

mciSendString为啥有的MP3音乐播放不出来

API函数mciSendString如何顺序播放