Simple Media Player (二)

原创 2018年04月14日 23:11:37

PiliPala Player

这次按照作业要求,PiliPala Player增加了在线播放的功能以及下载.mp3或者.mp4到music文件夹两个功能。两个功能的核心我理解为文件流的处理问题。

下面是PiliPala 2.0版本的功能演示。

主页面

在线播放功能要在textbox中输入播放网址,如http://www.neu.edu.cn/indexsource/neusong.mp3,然后点击Play Online

Download的功能也是将目标的网址输入之后,点击Download,此时你的文件就会下载到本地,同样用我挚爱的校歌举例。

然后选择Select File

这样neusong就被下载到本地了。



关于遇到的技术问题

对于在线播放,只需要将原来从 FileOpenPicker 获取的文件源改为网站地址url就可以了。本菜没有在csdn的论坛上找到这类博文,所以直接请教的大神室友。下面是我的代码:

        private void Button_Online(object sender, RoutedEventArgs e)
        {
            mediaplayer.Source = new Uri(URlBox.Text.ToString());
        }

然后对于下载到本地的问题

我参考了下面的博文:

https://www.cnblogs.com/T-ARF/p/5886153.html

其代码如下:

HttpClient client = new HttpClient();
            using (var musicStream = client.GetStreamAsync("http://dx.sc.chinaz.com/Files/DownLoad/sound1/201207/1771.mp3").Result)
            {
                int currentPos = 0;
                byte[] tempbyte = new byte[4096];

                MemoryStream ms = new MemoryStream(4096);
                //当遇到0,表示读完了
                do
                {
                    currentPos = musicStream.Read(tempbyte, 0, 4096);
                    ms.Write(tempbyte, 0, currentPos);
                } while (currentPos != 0);
                File.WriteAllBytes("c:\\test.mp3", ms.ToArray());
                System.Console.WriteLine("OK");
            }

反正其主要运用httpclient,然后我又找到了一片关于httpclient的博文https://blog.csdn.net/duyelang/article/details/50526213

然后我的相关代码:

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            DownloadFile(URlBox.Text);
        }

        private async void DownloadFile(String Uri)
        {
            Task t = new Task(() =>
            {
                try
                {
                    using (HttpClient httpClient = new HttpClient())
                    {
                        using (HttpResponseMessage response = httpClient.GetAsync(new Uri(Uri)).Result)
                        {
                            var filename = Uri.Split('/');
                            WriteToFile(filename[filename.Length - 1], response.Content.ReadAsByteArrayAsync().Result);
                        }
                    }
                }
                catch (Exception e)
                {
                   
                }
            });
            t.Start();
            await t;
        }

        private async void WriteToFile(string fileName, byte[] file)
        {
            try
            {
                StorageFolder folder = KnownFolders.MusicLibrary;
                
                StorageFile f = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
                using (StorageStreamTransaction x = await f.OpenTransactedWriteAsync())
                {
                    using (DataWriter w = new DataWriter(x.Stream))
                    {
                        w.WriteBytes(file);
                        x.Stream.Size = await w.StoreAsync();
                        await x.CommitAsync();
                    }
                }
            }
            catch (Exception ex)
            {
                
            }



以上就是所有内容,慢慢学习,慢慢探索,越发体会到了uwp的乐趣。期待下次作业。

SEM实战教程(二)

SEM实战培训,主要针对零基础到高手的实战操作和数据分析等的系列的培训课程,由SEM实战网老卢培训和服务,以实战为基础,解决竞价中所遇到的问题就是最大的实战,故言SEM实战培训。
  • 2017年03月10日 16:37

SDL - Simple DirectMedia Layer

SDL(Simple DirectMedia Layer)是一个开源的跨平台多媒体库,用于直接控制底层的多媒体硬件,包括音频、键盘、鼠标、操纵杆、3D硬件(通过OpenGL)以及2D视频framebu...
  • gohome520
  • gohome520
  • 2011-09-21 23:38:01
  • 1841

使用VLC media player搭建简单的流媒体服务器

用VLC media player搭建简单的流媒体服务器
  • GISuuser
  • GISuuser
  • 2017-09-09 10:05:58
  • 859

干净卸载Windows Media Player的工具

  • 2012年05月05日 10:30
  • 8.96MB
  • 下载

Windows Media Player全功能播放解码器

  • 2014年03月25日 12:43
  • 9.46MB
  • 下载

Windows media player皮肤随意改(原创)

Windows media player皮肤随意改                                  提起Windows media player可以说是无人不知无人不晓了,这个大名鼎...
  • accp_fangjian
  • accp_fangjian
  • 2004-12-06 12:43:00
  • 8641

Quintessential Media Player v5.0 简中汉化包

  • 2014年01月28日 10:54
  • 1.84MB
  • 下载

Windows Media Player 出现内部错误修复方法

regsvr32 %windir%/system32/jscript.dllregsvr32 %windir%/system32/vbcript.dll
  • scz123
  • scz123
  • 2006-11-22 15:51:00
  • 2815

使Windows Media Player可以播放MKV格式文件的插件

  • 2012年10月30日 11:06
  • 1.29MB
  • 下载

windows media player不显示图像只有声音

应该是转码问题,下载了好多个解码器都不好用,最后下载了一个K-lite codec,完美解决! 网址:http://rj.baidu.com/soft/detail/27005.html?ald ...
  • lyq_0827
  • lyq_0827
  • 2017-06-26 09:09:36
  • 1905
收藏助手
不良信息举报
您举报文章:Simple Media Player (二)
举报原因:
原因补充:

(最多只允许输入30个字)