MP3、MP4的文件选择及播放
项目主页网址如下:
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的文件选择及播放的更多相关文章
- VC用MCI播放mp3等音乐文件
VC播放mp3等音乐文件,可以使用MCI.MCI ( Media Control Interface ) ,即媒体控制接口,向基于Windows操作系统的应用程序提供了高层次的控制媒体设备接口的能力. ...
- 部分MP4在谷歌浏览器上无法播放
Chrome浏览器支持HTML5,它支持原生播放部分的MP4格式(不用通过Flash等插件). 为什么是部分MP4呢?MP4有非常复杂的含义(见http://en.wikipedia.org/wiki ...
- (原)从mp4,flv文件中解析出h264和aac,送解码器解码失败
转载请注明出处:http://www.cnblogs.com/lihaiping/p/5285166.html 今天在做本地文件解码测试,发现从mp4,flv文件中读出来的帧数据,h264和aac帧直 ...
- HTML——部分MP4在谷歌浏览器上无法播放
Chrome浏览器支持HTML5,它支持原生播放部分的MP4格式(不用通过Flash等插件). 为什么是部分MP4呢?MP4有非常复杂的含义(见http://en.wikipedia.org/wiki ...
- Android WebView 实现文件选择、拍照、录制视频、录音
原文地址:Android WebView 实现文件选择.拍照.录制视频.录音 | Stars-One的杂货小窝 Android中的WebView如果不进行相应的设置,H5页面的上传按钮是无法触发And ...
- atitit.mp4 视频文件多媒体格式结构详解
atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个“box”组成的,2 4. 典型简化mp43 5. Fragments5 6. r ...
- MP4大文件虚拟HLS分片技术,避免服务器大量文件碎片
MP4大文件虚拟HLS分片技术,避免点播服务器的文件碎片 本文主要介绍了通过虚拟分片技术,把MP4文件,映射为HLS协议中的一个个小的TS分片文件,实现了在不实际切分MP4文件的情况下,通过HLS协议 ...
- Java通过流对MP4视频文件进行加密,H5 video播放流
加密目标文件 代码如下: 不建议进行二次加密,若二次加密必须要二次解密 package com.xgt.util; import java.io.*; public class VideoEncode ...
- cordova加载层、进度条、文件选择插件
在做cordova项目的时候,感觉应用的响应速度跟原生应用比相差甚远,一个主要问题就是如加载层.进度条等弹出对话框的效率不行.毕竟项目中的这些弹框都是用dom拼成的,dom的渲染效率和原生控件比起来慢 ...
随机推荐
- eclipse导入maven时,html页面引入js的路径出现红色波浪线
用eclipse导入一个springboot项目时,html页面引入js以及css时出现如下图所示情况,html页面用了 thymeleaf模板引擎.另外js文件与css文件路径也是正确无误的. 原来 ...
- wtforms组件使用实例及源码解析
WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. WTforms作用:当网站中需要用到表单时,WTForms变得很有效.应该把表单定义为类,作为单独的一个模块. ...
- leetcode python两个排序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 你可以假设 nums1 和 nums2 不同 ...
- 分析python日志重复输出问题
问题起源: 在学习了python的函数式编程后,又接触到了logging这样一个强大的日志模块.为了减少重复代码,应该不少同学和我一样便迫不及待的写了一个自己的日志函数,比如下面这样: impor ...
- solution for python can not import local module
blog 这次遇到的问题是sys.path的输出不包含'',导致无法import当前文件和文件夹 When no ._pth file is found, this is how sys.path i ...
- hiper工具查看页面加载时间
先需要下载 cnpm i hiper -g # 当我们省略协议头时,默认会在url前添加`https://` # 最简单的用法 hiper baidu.com # 如何url中含有任何参数,请使用双引 ...
- CocosCraetor中图像资源Texture和SpriteFrame的区别
Texture是保存在GPU缓冲中的一张纹理.是由一张图片创建获得的. SpriteFrame是Texture+Rect,根据一张纹理材质来剪切获得. SpriteFrame是Texture+Rect ...
- 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/常用套路【入门】
原文链接https://www.cnblogs.com/zhouzhendong/p/Fast-Fourier-Transform.html 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/ ...
- Linux命令学习总结之rmdir命令的相关资料可以参考下
这篇文章主要介绍了Linux命令学习总结之rmdir命令的相关资料,需要的朋友可以参考下(http://www.nanke0834.com) 命令简介: rmdir命令用用来删除空目录,如果目录非空, ...
- python3和grpc的微服务探索实践
对于微服务的实践,一般都是基于Java和Golang的,博主最近研究了下基于Python的微服务实践,现在通过一个简单的服务来分析Python技术栈的微服务实践 技术栈:Python3 + grpc ...