Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I play a sound in an asp.net web page?

Tags:

c#

asp.net

I want to play some sounds in my web page once I click a button. This is my code but it shows an error.

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

error:

Please be sure a sound file exists at the specified location.

but the file exists in my project and I'm sure that the address is correct.

like image 947
Hadi Nemati Avatar asked Sep 08 '12 08:09

Hadi Nemati


4 Answers

You cannot play a file on a web page using the System.Media.Soundplayer class !!!

Reason

It will play sound on server-side not client-side.

As mentioned as in below links
- Problem With The C# System.Media.SoundPlayer Class On A Web Host
- What is the most “compatible” way of autoplaying sound ?

Solution

  • Other SO Answer over this same requirements.
  • Use Any other Flash or Silverlight based plugins.
  • Use html embed tag or html5 audio tag. Examples can be seen on w3schools

Html5-based audio solutions (works on modern browsers only)

  • <embed> tag: The <embed> tag defines a container for external (non-HTML) content. (It is an HTML5 tag, invalid in HTML 4, but works in all browsers).
<embed height="100" width="100" src="horse.mp3" />
  • <object> tag: The <object> tag can also define a container for external (non-HTML) content.
<object height="100" width="100" data="horse.mp3"></object>
  • <audio> tag: The <audio> element is an HTML5 element, invalid in HTML 4, but it works in all browsers.
<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>

Please note the problems with html5-based solutions you must convert your videos to different formats.
- The <audio> element does not validate as HTML 4 and XHTML.
- The <embed> element does not validate as HTML 4 and XHTML.
- The <embed> element cannot "fall-back" to display an error.

like image 78
Harsh Baid Avatar answered Nov 16 '22 16:11

Harsh Baid


You need to use <object> or <embed> html tags.

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

Or HTML5 tag

<audio src="WindowsBalloon.wav">
  <p>Your browser does not support the audio element.</p>
</audio>
like image 26
KV Prajapati Avatar answered Nov 16 '22 15:11

KV Prajapati


This works in HTML5 :

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Write("<embed height='0' width='0' src='Sound.wav' />");
}
like image 34
tubefavorites.com Avatar answered Nov 16 '22 17:11

tubefavorites.com


This is what I think you want:

Server.MapPath(string path);

Returns the physical file path that corresponds to the specified virtual path on the Web server.

Parameters: path: The virtual path of the Web server.
Returns: The physical file path that corresponds to path.

SoundPlayer s = new SoundPlayer();<br>
s.SoundLocation = **Server.MapPath("WindowsBalloon.wav");**<br>
s.PlaySync();
like image 31
reza Avatar answered Nov 16 '22 15:11

reza