zoukankan      html  css  js  c++  java
  • MCI播放mp3文件error:初始化mci时发生问题

      今天使用MCI写一个音乐播放器雏形的时候,使用的是mp3文件,在打开第一个文件时候还没有问题,但是在换了一个mp3文件之后,发现打开文件失败了,使用mciGetErrorString函数得到其错误为:初始化mci时发生问题。

      在百度上找了很多问题,都没有找到,在一个贴吧里看见有人说似乎只有网易云音乐的mp3文件打开会出现问题,别的都不会。抱着这个想法,又在qq音乐上下了一个mp3音乐文件,果然没有问题。

      但是知其然不知其所以然,还是很迷惑。后来想到可以把这个中文错误翻译一下在bing或者Google上找,于是尝试以Initializing MCI搜索bing,还真找到了MS的英文错误原文:a problem occured in initializing mci。并在StackOverFlow上找到了正解,链接如下:

      https://stackoverflow.com/questions/2443527/delphi-error-when-starting-mci

      这个答案大致的意思就是:

      Ok,我发现了问题的源头。我使用了这个小型的Delhpi MP3 Player Tutorial(你可以在这里下载这个项目)去测试了你的MP3文件并且我(也)得到了和你的MP3一样的错误。

      在一些测试之后我发现了其他MP3文件在这个Tutorial应用上播放良好。你的MP3则在Windows Media Player 和 其他多媒体播放器上播放良好。

      是的,重新编码这个文件解决了问题,但这并不是一个真的“问题”。这个问题来自于MP3的元数据(这个ID3 tags)而并非声音文件本身的编码问题。

      我使用Mp3tag操作这个文件,之一除了这个tags,在此之后所有一切工作良好,没有EMCIDeviceError。

      看起来是TMediaPlayer在遇到一些格式的元数据时会崩溃。在我搜索时,我也看到了TMediaPlayer的有关嵌入JPEG封面的MP3文件的bug报告。

      后面的不在翻译了。到这里其实很明白了。网易云使用的是嵌入JPEG封面的mp3格式,而我后来使用QQ音乐下载的文件则不是这种格式的。而这一点,假如你是win10系统,在删除文件时候,就可以看出来。

      

      这个是网易云音乐下载的mp3格式音乐,删除时候是有文件封面的。

     

      而这个是QQ音乐下载的mp3格式,这个显然没有封面,这个使用MCI播放也确实良好。

  • 相关阅读:
    paxos算法
    List
    es资料汇总
    尚硅谷Kafka
    lostach安装配置
    zookeeper安装
    zookeeper配置详解
    C# 微信企业付款给个人之相关配置
    JS--正则表达式验证
    uniapp小程序--自定义分享标题
  • 原文地址:https://www.cnblogs.com/FWFC/p/8868478.html
Copyright © 2011-2022 走看看