Windows和Windows Phone应用终于可以使用FFmpeg了
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)
题记:曾经在Windows Phone上想开发一个支持多种格式的媒体播放器是比较困难的一件事情,因为无法利用FFmpege这样的开源库。不过现在好了,微软提供了一个开源的FFmpegInterop解决了此问题。
由于WinRT和Windows Phone平台的限制,在上面的APP只能播放内置多媒体播放器支持的几种格式(比如WMV,MP4等),虽然这些格式还是能满足大部分情况。不过如果你打算开发一款格式支持更全面的播放器(或者你的软件打算播放一些额外的格式,比如mkv、flv和mov等),那么就比较分周折了,因为一些常用的开源多媒体库无法直接使用。就连VLC这样的著名软件都迟迟没有推出WP版本。
微软曾经发布了一系列编译指令来构建和WinRT兼容的FFmpeg。不过这样做会带来性能损耗。为了解决这个问题,微软最近在GitHub上发布了一个名为FFmpegInterop的开源库,解决了这个问题。这个开源库利用FFmpege来处理媒体内容,但回放使用Windows媒体框架。这种方式能够获得更好的性能,因为Windows媒体框架可以利用硬件加速。微软同时也发布了使用C#、C++和JavaScript编写的示例媒体播放器APP。
大致用法是:
- 创建一个FFmpegInterop对象,插接到XAML的MediaElement对象中或者WinJS的HTML5 Video组件中
- 使用FileOpenPicker打开一个本地文件,作为一个流传递给FFmpegInterop
上述使用步骤的C#代码类似如下:
1: // Instantiate FFmpeg object and pass the stream from opened file
2: IRandomAccessStream readStream = await file.OpenAsync(FileAccessMode.Read);
3: FFmpegMSS = FFmpegInteropMSS.CreateFFmpegInteropMSSFromStream(readStream, false, false);
4:
5: // Pass MediaStreamSource to Media Element
6: mediaElement.SetMediaStreamSource(FFmpegMSS.GetMediaStreamSource());
更详细的用法可以通过“阅读原文”来了解。从原文地址中也可以找到该项目的GitHub地址。
(特别提醒,微软在GitHub上的主页还列出了很多开源项目,是个不容错过的宝藏。)
原文地址:http://blogs.windows.com/buildingapps/2015/06/05/using-ffmpeg-in-windows-applications/
Windows和Windows Phone应用终于可以使用FFmpeg了的更多相关文章
- Windows下使用Visual Studio 2010编译ffmpeg全过程
		在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ... 
- Installing the .NET Framework 3.5 on Windows 8, Windows 8.1 and Windows 10
		Installing the .NET Framework 3.5 on Windows 8, Windows 8.1 and Windows 10 .NET Framework (current v ... 
- 用C#创建Windows服务(Windows Services)
		用C#创建Windows服务(Windows Services) 学习: 第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程中选取 Windows 服务(W ... 
- Memory Limits for Windows and Windows Server Releases
		来源:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx Limits on memory ... 
- Notice to users of DB Query Analyzer in Windows 7, Windows 8 and Windows 10
		UnlikeWinXP, VISTA, Windows2000, Windows Nt and Win98,Windows 7 / Windows 8 / Windows 10 select ... 
- How to detect, enable and disable SMBv1, SMBv2, and SMBv3 in Windows and Windows Server
		转自:https://support.microsoft.com/en-us/help/2696547/detect-enable-disable-smbv1-smbv2-smbv3-in-windo ... 
- [转载]Memory Limits for Windows and Windows Server Releases
		Memory Limits for Windows and Windows Server Releases This topic describes the memory limits for sup ... 
- C# windows服务:创建Windows服务(Windows Services)的一般步骤
		C#创建Windows服务(Windows Services) Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Wind ... 
- [微软]The latest version of Windows is Windows Sandbox
		The latest version of Windows is Windows Sandbox by Surur @mspoweruser Dec 19, 2018 at 1:40 GMT As h ... 
随机推荐
- SQL Server中的索引
			1 SQL Server中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.这些键存储在一个结构(B 树)中,使 SQL Serve ... 
- 《Head First Servlet JSP》web服务器,容器,servlet的职责
			(一)web服务器,容器,servlet的职责 (二)J2EE服务器与web容器 
- jq隐藏页面的一行
			<script type="text/javascript" src="http://files.cnblogs.com/914556495wxkj/jquery- ... 
- 【转】CentOS5.6下配置rsync内网同步数据到外网
			[转]CentOS5.6下配置rsync内网同步数据到外网 本文转自:http://www.linuxidc.com/Linux/2012-06/64070.htm 一.需求 卫士那边有一个需求,就是 ... 
- opencart 引入 TWIG 模板引擎
			1.首先将 twig 包放入 system\library 目录. 2.在 system/startup.php 文件最后添加引入语句. require_once(DIR_SYSTEM . 'lib ... 
- C#在类中用调用Form的方法
			class 你的类 { private Form1 frm; //构造函数 public 你的类( Form1 form) { frm = form; } //调用form方法 private voi ... 
- Effective C++ -----条款35:考虑virtual函数以外的其他选择
			virtual函数的替代方案包括NVI手法及Strategy设计模式的多种手法.NVI手法自身是一个特殊形式的Template Method设计模式. 将机能从成员函数移到class外部函数,带来的一 ... 
- replace和replaceAll(路径反斜杠问题)
			转载自:http://www.cnblogs.com/zhenmingliu/archive/2012/01/13/2321560.html 1)replace的参数是char和CharSequenc ... 
- CSS3实现元素旋转
			-webkit-transform:rotate(30deg); 参数代表顺时针自旋转角度 这个元素还提供了文本倾斜的方法 - HTML5与CSS3 P299 
- php中文转换编码函数
			$filename= $list->filename; // 获取文件名字 if(preg_match("/[\x80-\xff]/",$filename)){ // 如果是 ... 
