1. 程式人生 > >uwp----播放器2

uwp----播放器2

img 過程 itl mage log transfer 例如 同學 med

我的播放器2 github:https://github.com/xiongxlxhm/play

增加播放器的功能

  • 在線播放:直接播放在線音頻
  • 緩存和播放:將在線音頻下載到音樂文件夾,然後播放文件

前次做的播放器,我覺得他並不美觀。所以我這次用了課上老師講的SplitView,課上就是光聽老師講,但是沒有自己試一試,就決定用frame調用各個功能的頁面,但是想象總是美好的,我做出來的就是醜。我弄了三個新的page分別來實現播放音樂,視頻和下載音樂。

點開菜單按鈕,有四個功能選擇。

技術分享圖片

一.在線

點擊“在線”按鈕,就跳轉到網頁,播放我們的校歌。

這個功能,做起來相對簡單一點。我在網上找了一下

https://social.msdn.microsoft.com/Forums/zh-CN/f1736e5b-619a-4533-8a28-5286f5eac6f2/windows-10-uwp?forum=windowsphonezhchs&forum=windowsphonezhchs

這個網站,是找。MP4的,但是MP3也是一樣的。

await Windows.System.Launcher.LaunchUriAsync(new Uri("http://a.b.com/a.mp4"), new Windows.System.LauncherOptions() { ContentType = "video/mp4" });

他介紹了一個這樣的代碼,我就試著用了,就把他加到了按鈕的click事件中,是可以的我就解決了。但是什麽也沒有懂,所以我看了

https://msdn.microsoft.com/zh-cn/library/windows/apps/windows.system.aspx

這個網站裏的一些介紹,是windows.systeml裏launcher類下的Launcher.LaunchUriAsync | launchUriAsync 方法。是啟動與指定uri方案相關聯的程序。通過這個方法就可以訪問到在線的音頻。

https://docs.microsoft.com/en-us/previous-versions/windows/apps/hh965322(v=win.10)

這個網頁就講了您可以訪問作為應用程序包一部分提供的應用程序文件中的文件資源,也可以將其作為組件或框架包的一部分包含在應用程序數據或網絡中。

二.本地選擇

https://docs.microsoft.com/zh-cn/windows/uwp/files/quickstart-managing-folders-in-the-music-pictures-and-videos-libraries

這個網頁裏是將現有的音樂、圖片和視頻文件夾添加到相應的庫。 你還可以從庫中刪除文件夾、獲取庫中的文件夾列表,並發現存儲的照片、音樂和視頻。

庫是虛擬的文件夾集合,其中包括一個默認的已知文件夾,以及用戶通過使用你的應用或任一內置應用添加到庫的任何其他文件夾。 例如,圖片庫默認包含“圖片”已知文件夾。 用戶可以通過使用你的應用或內置的“照片”應用,將文件夾添加到圖片庫或從中刪除它們。

var myPictures = await Windows.Storage.StorageLibrary.GetLibraryAsync(Windows.Storage.KnownLibraryId.Pictures);

Windows.Storage.StorageFolder savePicturesFolder = myPictures.SaveFolder;

Windows.Storage.StorageFolder newFolder = await myPictures.RequestAddFolderAsync();

QueryOptions queryOption = new QueryOptions

(CommonFileQuery.OrderByTitle, new string[] { ".mp3", ".mp4", ".wma" });

queryOption.FolderDepth = FolderDepth.Deep;

Queue<IStorageFolder> folders = new Queue<IStorageFolder>();

var files = await KnownFolders.MusicLibrary.CreateFileQueryWithOptions

(queryOption).GetFilesAsync();

寫了上面的這些語句就可以實現了在庫裏選擇文件的功能。

https://blog.csdn.net/u011033906/article/details/65447199

這裏講裏文件和打開庫。

技術分享圖片

三.下載

我實現的這個下載功能,我真心是弄了好久。我找了好多的資料,我就找怎麽下載,就看到了這個網頁

https://blog.csdn.net/lindexi_gd/article/details/53425673

但是這個網頁講的是下載圖片的,但是我想應該會是一樣的吧,就看裏一下,但是最後還是放棄了,網上的大部分都是以圖片的下載為例子的,我真的是搞不懂了,所以就找了同學問問,他是怎麽做的,他給我說去以前看的個的微軟的網址上看

https://docs.microsoft.com/zh-cn/windows/uwp/files/quickstart-managing-folders-in-the-music-pictures-and-videos-libraries

然後我就這個網頁裏說了一步步做下來,就是可以找到了本地的圖片和音頻等,我就把他放到了我的功能二----本地選擇。

但是看到最後,使用流方法向媒體庫添加文件,但我還是不會,不怎麽弄,又在網上各種亂搜,找到了https://www.cnblogs.com/T-ARF/p/5886153.html

但是這裏的代碼我用到我的裏就是有錯,我就把代碼放到網上搜一搜是怎麽用的,我又看了

https://msdn.microsoft.com/zh-cn/library/system.net.http.httpclient.aspx

這裏介紹了HttpClient()的用法。

代碼裏

public async Task<StorageFile> Load()

{

try

{

var httpClient = new Windows.Web.Http.HttpClient();

var buffer = await httpClient.GetBufferAsync(new Uri("http://www.neu.edu.cn/indexsource/neusong.mp3"));

if (buffer != null && buffer.Length > 0u)

{

var file = await KnownFolders.MusicLibrary.CreateFileAsync("neusong.mp3", CreationCollisionOption.ReplaceExisting);

using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))

{

await stream.WriteAsync(buffer);

await stream.FlushAsync();

}

return file;

}

}

catch { }

return null;

}

最後返回了file,應該可以到文件了,我就研究文件

https://blog.csdn.net/u011033906/article/details/65447199

這裏講裏文件,最後將緩存的文件播放出來。將neusong.mp3下載到音樂文件夾

在使用MediaElement的時候有問題,我就看了

https://msdn.microsoft.com/zh-tw/library/windows/apps/mt187272.aspx

通過調用SetSource方法來找播放源。

技術分享圖片

在下載的這個功能裏,我真的費了很久的時間,與同學交流的很多菜搞懂了下載的這個過程。也試了

https://docs.microsoft.com/en-us/uwp/api/windows.networking.backgroundtransfer.backgrounddownloader

這個網址裏講的後臺下載,但是也是有點難懂,沒有成功。

uwp----播放器2