在 Windows 移动设备上播放声音文件(特别是 .wav)

Posted

技术标签:

【中文标题】在 Windows 移动设备上播放声音文件(特别是 .wav)【英文标题】:Play sound file on windows mobile device (.wav specifically) 【发布时间】:2012-06-27 17:40:16 【问题描述】:

我想在移动设备上播放 .wav 文件。我想我的麻烦在于实际正确访问文件。以下是我目前拥有的代码:

string path = "\\Windows\\badRead.wav";
System.Media.SoundPlayer player = new System.Media.SoundPlayer(path);
player.PlaySync();
player.PlaySync();

我错过了什么?我收到的错误是“请确保指定位置存在声音文件。 它是在服务器上搜索wav文件吗?提前谢谢你。

【问题讨论】:

如果路径正确,这应该可以工作。您是否收到 FileNotFound 异常?您是否验证过该文件存在于 intermec 设备上? 确实存在。我认为问题在于未指定的驱动程序。它没有映射,我不熟悉以这种方式访问​​文件。 您无法浏览到该文件并单击它进行播放吗?如果它在那里失败,那么可能是驱动程序问题。 我可以浏览并播放它,但我无法以编程方式将其关闭。 您是否尝试将 .wav 复制到另一个文件夹?也许尝试与您的应用程序相同的文件夹SoundPlayer player = new SoundPlayer(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\badRead.wav") 【参考方案1】:

你读过这个吗:http://peterfoot.net/SystemMediaSoundPlayerVersusThePlaySoundAPI.aspx

在使用 player.PlaySync 之前,您可能必须先发出 player.Load():

    private SoundPlayer Player = new SoundPlayer();
    private void loadSoundAsync()
    
        // Note: You may need to change the location specified based on
        // the location of the sound to be played.
        this.Player.SoundLocation = "http://www.tailspintoys.com/sounds/stop.wav";
        this.Player.LoadAsync();
    

    private void Player_LoadCompleted (
        object sender, 
        System.ComponentModel.AsyncCompletedEventArgs e)
    
        if (this.Player.IsLoadCompleted)
        
            this.Player.PlaySync();
        
    

另一种方法是原生使用 Play>Sound API:

http://msdn.microsoft.com/en-us/library/ms228710%28v=vs.90%29.aspx

【讨论】:

我不确定我是否完全理解。 Player_LoadCompleted 永远不会被触发。 这实际上不起作用。它可以在我的本地机器上运行,但是当我将它投入生产到服务器时,声音不会播放。【参考方案2】:

我使用 javascript 而不是尝试播放声音服务器端。

我找到了我的答案here

【讨论】:

以上是关于在 Windows 移动设备上播放声音文件(特别是 .wav)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上使用 C++ 在特定音频设备上播放声音?

在 python 中播放声音文件的跨平台方式是啥?

在移动设备上预加载音频

想给UNITY里面 加一个移动就播放声音的脚本,如何控制这个声音的开和关

电脑文件没声音怎么办啊

Adobe AIR 动态声音和录制延迟问题