zoukankan      html  css  js  c++  java
  • windows 自带winmm.dll播放音频问题

    同事用的一个录音小程序在他机器上可以用,换了两个电脑不能用,获取音频长度时总是0,检查代码也没有发现具体问题。最后发现是电脑声卡驱动的问题。更新声卡驱动好了。

    附上播放音频的代码:

    首先,导入dll文件。

     [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
     public static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
    

      播放音频:

      string buf = "";
    buf = buf.PadLeft(128, ' ');
     strFileName = "open " + Convert.ToChar(34) + strFileName + Convert.ToChar(34) + " alias media";
     APIClass.mciSendString(strFileName, buf, buf.Length, 0); //初始化音频文件 
    APIClass.mciSendString("play media", buf, buf.Length, 0); //播放音频文件 
    

      获取音频长度:

                string durLength = "";
                durLength = durLength.PadLeft(128, Convert.ToChar(" "));
                APIClass.mciSendString("status media length", durLength, durLength.Length, 0);
                durLength = durLength.Trim().Replace("","");
    
                if (string.IsNullOrEmpty(durLength))
    
                    return 0;
    
                else
    
                    return Convert.ToInt32(durLength)/1000;       

    Replace("","")是刚开始定位的问题,不replace直接报异常。加上replace,长度又都为0,未获取到音频长度。

    装上声卡驱动解决问题。开发的电脑上都没有装声卡驱动,(*@ο@*) 哇~

  • 相关阅读:
    骨场经历
    聚财与聚人
    腾讯正式开始了QQForMAC的测试
    fiddler
    soap协议基本结构
    js小判断
    控制器
    resharper快捷键
    如何让datetime类型数据接受并且产出long或string类型?
    AES加密,解密方法
  • 原文地址:https://www.cnblogs.com/meng9527/p/9558198.html
Copyright © 2011-2022 走看看