【问题标题】:How do I play a sound in an asp.net web page?如何在 asp.net 网页中播放声音?
【发布时间】:2012-09-01 23:48:02
【问题描述】:

单击按钮后,我想在网页中播放一些声音。这是我的代码,但它显示错误。

SoundPlayer x = new SoundPlayer();
x.SoundLocation = "WindowsBalloon.wav";
//x.Play();
x.PlaySync();

错误:

请确保指定位置存在声音文件。

但文件存在于我的项目中,我确定地址是正确的。

【问题讨论】:

  • "WindowsBalloon.wav" 是相对路径,设为绝对路径"c:\\WindowsBalloon.wav"。您希望在哪里听到声音?在服务器或客户端上。您的示例将在服务器上播放声音。

标签: c# asp.net


【解决方案1】:

您无法使用System.Media.Soundplayer 类播放网页上的文件!!!

原因

它将在服务器端而不是客户端播放声音。

如下链接所述
- Problem With The C# System.Media.SoundPlayer Class On A Web Host
- What is the most “compatible” way of autoplaying sound ?

解决方案

  • 其他SO Answer 满足相同要求。
  • 使用任何其他基于 Flash 或 Silverlight 的插件。
  • 使用 html 嵌入标签或 html5 音频标签。例子可见w3schools

基于 Html5 的音频解决方案(仅适用于现代浏览器)

  • <embed> 标签:<embed> 标签定义外部(非 HTML)内容的容器。 (它是一个 HTML5 标记,在 HTML 4 中无效,但适用于所有浏览器)。
<embed height="100" width="100" src="horse.mp3" />
  • &lt;object&gt; 标签:&lt;object&gt; 标签还可以为外部(非 HTML)内容定义容器。
<object height="100" width="100" data="horse.mp3"></object>
  • &lt;audio&gt; 标签:&lt;audio&gt; 元素是 HTML5 元素,在 HTML 4 中无效,但适用于所有浏览器。
<audio controls="controls" height="100" width="100">
  <source src="horse.mp3" type="audio/mp3" />
  <source src="horse.ogg" type="audio/ogg" />
  <embed height="100" width="100" src="horse.mp3" />
</audio>

请注意基于 html5 的解决方案的问题,您必须将视频转换为不同的格式。
- &lt;audio&gt; 元素不验证为 HTML 4 和 XHTML。
- &lt;embed&gt; 元素不验证为 HTML 4 和 XHTML。
- &lt;embed&gt; 元素不能“回退”以显示错误。

【讨论】:

  • 如何在 BUTTON CLICK 上播放哔声?这里的所有答案都没有帮助?
  • 如果任何现有问题未涵盖您的方案,最好单独提出您的问题。
【解决方案2】:

您需要使用&lt;object&gt;&lt;embed&gt; html 标签。

<object data="WindowsBalloon.wav"></object>

或 HTML5 标签

<audio src="WindowsBalloon.wav">
  <p>Your browser does not support the audio element.</p>
</audio>

【讨论】:

  • IE8 等非 HTML5 浏览器呢?那么闪存是唯一的选择吗?
【解决方案3】:

这适用于HTML5

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Write("<embed height='0' width='0' src='Sound.wav' />");
}

【讨论】:

    【解决方案4】:

    这就是我认为你想要的:

    Server.MapPath(string path);
    

    返回与 Web 服务器上指定的虚拟路径相对应的物理文件路径。

    参数: path:Web服务器的虚拟路径。
    返回:path对应的物理文件路径。

    SoundPlayer s = new SoundPlayer();<br>
    s.SoundLocation = **Server.MapPath("WindowsBalloon.wav");**<br>
    s.PlaySync();
    

    【讨论】:

      【解决方案5】:

      给定完整路径,即c:\wavfiles\WindowsBalloon.wav

      上面的'wavfiles'是一个用户特权文件夹。

      use x.PlayLooping()
      

      如果你想连续播放声音文件的功能

      小心点!

      使用一键退出循环,否则声音文件将连续运行。我建议你退出循环:-

      代码

       Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
              x.Stop()
          End Sub
      

      【讨论】:

        【解决方案6】:

        如果您需要以编程方式播放警报声,您可以这样做:

        <asp:Panel runat="server" ID="panBuzz" style="visibility:hidden">
           <audio runat="server" id="Buzz"  src="http://.....mp3" type="audio/mp3"/>
        </asp:Panel>
        

        代码隐藏(visual basic):

        Dim cBuzz As HtmlControl = DirectCast(panBuzz.FindControl("Buzz"), HtmlControl)
        cBuzz.Attributes.Add("autoplay", "autoplay")
        

        代码隐藏(C#):

        HtmlControl cBuzz = (HtmlControl)panBuzz.FindControl("Buzz");
        cBuzz.Attributes.Add("autoplay", "autoplay");
        

        【讨论】:

          【解决方案7】:

          尝试将驱动器号添加到路径中,例如“C:/WindowsBalloon.wav”。但这不会在客户端播放。我建议在客户端尝试 HTML5。

          【讨论】:

            【解决方案8】:

            SoundPlayer s = new SoundPlayer();
            s.SoundLocation = Server.MapPath("WindowsBalloon.wav");
            s.PlaySync();

            【讨论】:

            • 请添加有关您的解决方案的说明并格式化您的代码。
            猜你喜欢
            • 2016-03-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-23
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多