可视化第四课 - 实现简易播放器 Part 2

原创 2018年04月15日 23:59:17

    本次新添的功能有:

  • 在线播放,直接播放网络上的音频。
  • 缓存网络上的音频文件并播放。
  • 做了一些必要的优化。



    总览:


   


    在线播放:

    这里模仿之前的代码写成:

//C# --位于OpenFile()
mediaPlayerElement.Source = MediaSource.CreateFromStorageFile(file);
mediaPlayer = mediaPlayerElement.MediaPlayer;
mediaPlayer.Play();

    仿写:

//C# --我的代码
mediaPlayerElement.Source = MediaSource.CreateFromUri(new Uri(URL.Text));
mediaPlayer = mediaPlayerElement.MediaPlayer;
mediaPlayer.Play();

    运行后可用。



    缓存视频:

    首先要解决的问题是获取用户音乐库的路径,查阅文档 创建、写入和读取文件 及 KnownFolders Class 得知:

//C#
Windows.Storage.StorageFolder storageFolder =
    Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile sampleFile =
    await storageFolder.CreateFileAsync("sample.txt",
        Windows.Storage.CreationCollisionOption.ReplaceExisting)
//C#
StorageFolder storageFolder = KnownFolders.PicturesLibrary;
StorageFile file = await storageFolder.CreateFileAsync("sample.png", CreationCollisionOption.ReplaceExisting);

    这样便解决了获取文件路径及创建文件的问题:

//C# --我的代码
var filePath = KnownFolders.MusicLibrary; 
string fileName = "temp_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss");
//···
fileName += ".mp3";
filePath = KnownFolders.MusicLibrary;
//···
StorageFile fileFullPath = await filePath.CreateFileAsync(fileName);

   

    又通过阅读文档 音乐、图片和视频库中的文件和文件夹 学习如何使用流方法向媒体库添加文件,有代码:

StorageFolder testFolder = await StorageFolder.GetFolderFromPathAsync(@"C:\test");
StorageFile sourceFile = await testFolder.GetFileAsync("TestImage.jpg");
StorageFile destinationFile = await KnownFolders.CameraRoll.CreateFileAsync("MyTestImage.jpg");

using (var sourceStream = (await sourceFile.OpenReadAsync()).GetInputStreamAt(0))
{
    using (var destinationStream = (await destinationFile.OpenAsync(FileAccessMode.ReadWrite)).GetOutputStreamAt(0))
    {
        await RandomAccessStream.CopyAndCloseAsync(sourceStream, destinationStream);
    }
}

    我的代码如下:

//C# --我的代码
StorageFile fileFullPath = await filePath.CreateFileAsync(fileName);

using (var fileStream = await fileFullPath.OpenAsync(FileAccessMode.ReadWrite))
{
    await fileStream.WriteAsync(buffer);
    await fileStream.FlushAsync();    //关闭流
}

  

    其中有个小问题一直没发现,耽误不少时间,如果将

string fileName = "temp_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss");

    改为

string fileName = "temp_" + DateTime.Now.ToString("yyyy/MM/dd");

    会抛异常System.IO.FileNotFoundException,原因是不能出现“/”符号。



    除了这两个核心功能的实现外,还进行了一些优化。不过是一些布局与排版,具体在 我的GitHub 中查阅。


Delphi可视化精讲视频教程

目前市场上delphi教程少之又少,这让很多对delphi编程感兴趣的学员无从下手。本课程本着“理论+实践”的讲课原则,由浅入深的详细讲解delphi这门编程语言,零基础的学员也能学会。本套课程每节课都提供课件供学员们下载,方便学员们的复习。 Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;
  • 2017年11月28日 21:14

可视化第三课 - 实现简易播放器 Part 1

    研究了两节课的控件,终于到应用的时候了。这节课的目标是实现一个简单的播放器,功能十分简易,只需实现选择文件及播放即可。    界面:        选取文件:    播放音频:        ...
  • i_Xxvul
  • i_Xxvul
  • 2018-04-03 13:47:57
  • 27

自制简易音乐播放器 我的Java学习之路

音乐播放器,AudioClip和JFrame的综合应用
  • wangjian_an
  • wangjian_an
  • 2016-01-31 12:31:22
  • 2064

简易可视化编程工具

原文Dethe 是一个极客老爸,具有审美趣味的程序员,导师,以及可视化编程工具Waterbear的作者。他联合创办了温哥华手工制作教育沙龙并且满心希望机器纸折兔能火遍全球。在基于块(block-bas...
  • Sinde1992
  • Sinde1992
  • 2017-06-02 00:46:57
  • 4127

【web audio】web简易、可视化、音频播放器 0 0

是跟着慕课网的教程做的。看第一遍的时候不记得node了。。然后听得也有点懵逼。。看第二遍的时候就豁然开朗了。(一定是因为睡饱了)。。。 自己挺喜欢的,特别是可视化的Dot,黑色底看着像星空。自己对于这...
  • natsuyu
  • natsuyu
  • 2016-03-08 15:53:30
  • 1095

Android简易的音乐播放器实现

1.在sdcard中获取音频文件,实现音乐播放。并且音乐播放要放在服务当中避免受到Activity生命周期影响。2.使用SeekBar进行拖动时要暂停音乐的播放,避免拖动时进度条的更新。3.在使用Me...
  • ProgramMonkey_z
  • ProgramMonkey_z
  • 2017-01-17 16:48:42
  • 2038

Android 简单定制一个视频播放器

安卓系统提供了VideoView用来播放一些特定格式的视频,与MediaController结合使用可以对视频播放进行简单控制 例如: 在布局文件中先声明个VideoView: ...
  • new_one_object
  • new_one_object
  • 2017-02-03 00:40:30
  • 2155

基于MFC的简易的Windows播放器

基于MFC的简易的Windows播放器,实现简单的音频视频的播放功能。利用AppWizard创建MFC(exe)创建SDI应用程序,项目文件名为MediaPlayer。    在MFC应用...
  • Sayesan
  • Sayesan
  • 2015-09-16 16:15:13
  • 2395

通过html5的Audio API和canvas实现音频可视化

完成这个令人兴奋的玩意,其实得益于html5的Audio API(https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Audio_API) Web...
  • weixin_39364136
  • weixin_39364136
  • 2017-11-21 14:21:09
  • 218

最简单的音乐播放器,实现播放器基本功能(一)

最简单的音乐播放,实现最基本的功能
  • u011271055
  • u011271055
  • 2015-02-20 01:53:49
  • 3695
收藏助手
不良信息举报
您举报文章:可视化第四课 - 实现简易播放器 Part 2
举报原因:
原因补充:

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