项目主页网址如下:

https://github.com/Judylalala/en

####技术问题1:如何播放音频(MP3)、视频(MP4)?

####解决过程1:我首先想到了XMAL插件中的MediaPlayerElement,虽然官网相对于MediaElement而言,更推荐功能较多的MediaPlayerElement,但因为但在实际应用过程中遇到了下图所示的问题,所以使用了MediaElement。在使用的过程中发现了可以通过设置AreTransportControlsEnabled=True来自主控制视频或音频的播放、音量、缩放等。

我找到的代码如下:

<MediaElement Source="/Assets/ladybug.wmv"
MaxWidth="400"
AutoPlay="False"
AreTransportControlsEnabled="True" />

联系到之后要能够通过点击按钮在本地文件中选择MP3、MP4文件播放,根据我找到的网站:https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.mediaelement

我做的修改如下:

<MediaElement x:Name="mediaPlayer"
                          Source="/Assets/20170414_175108_01618.mp4"
                          MaxWidth="400"
                          AutoPlay="False"
                          AreTransportControlsEnabled="True"
                          Margin="78,70,100,70"/>
            <Button Content="Choose" Click="Button_Click"/>

其中为该控件添加了名字,以便后期通过这个名字来播放视频或音频。

同时添加了一个按钮,以便后期为这个按钮添加事件,通过点击按钮来选择本地文件。

####技术问题2:如何在本地选择MP3、MP4文件进行播放?

####解决过程2:我是真的一点头绪都没有,正好看见这个网址里面貌似有需要的代码,就copy了一下:

https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.mediaelement

由于题目要求只能选择MP3、MP4文件来播放,所以我对代码做了一下修改,代码如下:

private async void Button_Click(object sender, RoutedEventArgs e)
{
    await SetLocalMedia();
}

这段代码意味着当点击按钮的时候,执行SetLocalMedia()函数,该函数具体定义如下:

async private System.Threading.Tasks.Task SetLocalMedia()
{
    var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

openPicker.FileTypeFilter.Add(".mp4");
    openPicker.FileTypeFilter.Add(".mp3");

var file = await openPicker.PickSingleFileAsync();

// mediaPlayer is a MediaElement defined in XAML
    if (file != null)
    {
        var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
        mediaPlayer.SetSource(stream, file.ContentType);

mediaPlayer.Play();
    }
}

SetLocalMedia()函数指定了可以打开的文件类型、并将锁打开的文件通过名为mediaPlayer的控件播放出来。

其中字体不同且放大的部分便是经过修改后的代码,它指定了能够从本地文件中打开的类型是.mp3、.mp4。

最后做出来的成果如下图:

MP3、MP4的文件选择及播放的更多相关文章

  1. VC用MCI播放mp3等音乐文件

    VC播放mp3等音乐文件,可以使用MCI.MCI ( Media Control Interface ) ,即媒体控制接口,向基于Windows操作系统的应用程序提供了高层次的控制媒体设备接口的能力. ...

  2. 部分MP4在谷歌浏览器上无法播放

    Chrome浏览器支持HTML5,它支持原生播放部分的MP4格式(不用通过Flash等插件). 为什么是部分MP4呢?MP4有非常复杂的含义(见http://en.wikipedia.org/wiki ...

  3. (原)从mp4,flv文件中解析出h264和aac,送解码器解码失败

    转载请注明出处:http://www.cnblogs.com/lihaiping/p/5285166.html 今天在做本地文件解码测试,发现从mp4,flv文件中读出来的帧数据,h264和aac帧直 ...

  4. HTML——部分MP4在谷歌浏览器上无法播放

    Chrome浏览器支持HTML5,它支持原生播放部分的MP4格式(不用通过Flash等插件). 为什么是部分MP4呢?MP4有非常复杂的含义(见http://en.wikipedia.org/wiki ...

  5. Android WebView 实现文件选择、拍照、录制视频、录音

    原文地址:Android WebView 实现文件选择.拍照.录制视频.录音 | Stars-One的杂货小窝 Android中的WebView如果不进行相应的设置,H5页面的上传按钮是无法触发And ...

  6. atitit.mp4 视频文件多媒体格式结构详解

    atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个“box”组成的,2 4. 典型简化mp43 5. Fragments5 6. r ...

  7. MP4大文件虚拟HLS分片技术,避免服务器大量文件碎片

    MP4大文件虚拟HLS分片技术,避免点播服务器的文件碎片 本文主要介绍了通过虚拟分片技术,把MP4文件,映射为HLS协议中的一个个小的TS分片文件,实现了在不实际切分MP4文件的情况下,通过HLS协议 ...

  8. Java通过流对MP4视频文件进行加密,H5 video播放流

    加密目标文件 代码如下: 不建议进行二次加密,若二次加密必须要二次解密 package com.xgt.util; import java.io.*; public class VideoEncode ...

  9. cordova加载层、进度条、文件选择插件

    在做cordova项目的时候,感觉应用的响应速度跟原生应用比相差甚远,一个主要问题就是如加载层.进度条等弹出对话框的效率不行.毕竟项目中的这些弹框都是用dom拼成的,dom的渲染效率和原生控件比起来慢 ...

随机推荐

  1. 执行大SQL脚本方法

    当我们需要在SQLServer数据库里面执行一个大的文件时,会发现数据库根本无法打开该脚本文件,原因是因为查询分析器只能执行100M以内的文件,所以脚本过大就会造成内存溢出.此时我们可以使用osql工 ...

  2. jQuery概念

  3. 图像识别与OpenCV——Mat类与Mat_类的内存管理

    Mat_类是对Mat类的一个包装,其定义如下: template<typename _Tp> class Mat_ : public Mat { public: //只定义了几个方法 // ...

  4. Redis实战 - 3.Hash

    hash Redis的Hash有点像一个对象(object),一个Hash里面可以存多个Key-Value对作为它的field,所以它通常可以用来表示对象. Hash里面能存放的值也能作为String ...

  5. [NOI2018]你的名字

    题解: 前68分非常简单 建立SAM 另一个串在上面跑,然后求一个树链的并 我们会发现暴力就是min(l^2,n)的 所以复杂度最多是nsqrt(n)的 当然我们也可以nlogn维护 把所有点按照df ...

  6. Netty5服务端源码解析

    Netty5源码解析 今天让我来总结下netty5的服务端代码. 服务端(ServerBootstrap) 示例代码如下: import io.netty.bootstrap.ServerBootst ...

  7. UOJ#346. 【清华集训2017】某位歌姬的故事 动态规划

    原文链接www.cnblogs.com/zhouzhendong/p/UOJ346.html 题解 首先按照 $m_i$ 的大小排个序. 如果某一个区间和一个 m 值比他小的区间有交,那么显然可以将这 ...

  8. Python学习最佳路线图

    python语言基础(1)Python3入门,数据类型,字符串(2)判断/循环语句,函数,命名空间,作用域(3)类与对象,继承,多态(4)tkinter界面编程(5)文件与异常,数据处理简介(6)Py ...

  9. 基于Cmake+QT+VS的C++项目构建开发编译简明教程

    目录 一.工具下载与安装 1.     Qt 2.     Visual Studio 2015 3.     Cmake 二.C++及Qt项目构建 1.     基于VS构建Qt项目 2.     ...

  10. 畅通工程续 -- HDU 1874 floyd

    题目大意: 现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. 思路: floyd算法模板题,这是一个牺牲空间换取时间的算法,本质是动态规划. AC代码: #include < ...