網頁內嵌Windows Media Player播放器的多檔案播放方法

來源:互聯網
上載者:User

網頁內嵌Media Player播放器很簡單,以下代碼即可完成一個簡單的播放器:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type" /><title>音樂播放器÷</title></head><body><object height="200" type="video/x-ms-wmv" width="200">    <param name="filename" value="C:\Users\SkyD\Music\Groove Coverage\far away from home .mp3" />    <param name="autostart" value="true" />    <param name="loop" value="true"/></object></body></html>

運行效果:

 

如何讓播放器可以播放多個音頻/視頻檔案?

沒法直接在HTML中添加多重filename參數實現多檔案播放,可行的方法是:自行建立播放清單,然後將filename參數指向播放清單的位置。

以下C#代碼用於建立一個Windows Media Player所支援的播放清單檔案:

public static void 產生ASX音樂播放清單檔案(string 儲存路徑, params string[] 檔案路徑列表){    StringBuilder s = new StringBuilder();    foreach (var f in 檔案路徑列表)    {        s.AppendLine(string.Format(@"<Entry><Ref href = ""{0}""/></Entry>",f));    }    StreamWriter sw = new StreamWriter(儲存路徑, false, Encoding.Default);    sw.Write(string.Format(@"<Asx Version = ""3.0"" >{0}</Asx>",s));    sw.Close();}

需注意的是:

編碼應為Default(簡體中文系統中Default等同於GB2312),UTF-8、Unicode之類的都不行,ASCII可以,但不支援中文路徑。

音樂檔案名稱可以是本地路徑或網址,絕對或相對路徑都可以,如果是本地路徑就不需要進行Url編碼。

儲存的播放清單檔案名稱最好副檔名設為.asx,否則有可能播放器不認。

 

如何?隨機(亂序)播放歌曲?

沒法在HTML中通過參數指定亂序播允許存取為,只能通過變通方法實現:將播放清單複製N份,並分別打亂順序,組合為一個新的大播放清單,使得播放隨機化。

這裡提供一個簡單的擴充方法用於打亂集合:

static Random R = new Random();
/// <summary>/// 返回經隨機排序後的集合/// </summary>public static IEnumerable<T> Random<T>(this IEnumerable<T> o){    var c = o.Count();    var l = new List<int>();    for (int i = 0; i < c; i++)    {        l.Add(i);    }    while (l.Count > 0)    {        var i = l[R.Next(l.Count)];        l.Remove(i);        yield return o.ElementAt(i);    }}

使用時只需將N個經此方法打亂過的原始播放清單組合為新的播放清單輸出即可。

 

在傳統型程式中通過此方法變通實現背景音樂播放

這應該是傳統型程式中播放音樂最簡單的辦法吧,雖然有濃鬱的山寨風格,嘿嘿。

只需建立一個WebBrowser控制項,將其DocumentText屬性賦予播放器HTML代碼即可。

如下C#代碼即可實現背景音樂播放:

var path = @"C:\123.asx";var b = new WebBrowser();b.DocumentText = string.Format(@"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd""><html xmlns=""http://www.w3.org/1999/xhtml""><head><meta content=""text/html; charset=utf-8"" http-equiv=""Content-Type"" /><title>音樂播放器</title></head><body><object height=""200"" type=""video/x-ms-wmv"" width=""200""><param name=""filename"" value=""{0}"" /><param name=""autostart"" value=""true"" /><param name=""loop"" value=""true""/></object></body></html>",path);

 

下載

本文的XPS版本:http://www.uushare.com/user/icesee/file/3169359

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.