• 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。

    大致用法是:

    1. 创建一个FFmpegInterop对象,插接到XAML的MediaElement对象中或者WinJS的HTML5 Video组件中
    2. 使用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/

  • 相关阅读:
    Java EE (3) -- Java EE 6 Web Services Developer Certified Expert(1z0-897)
    二、用电信号传输 TCP/IP 数据(1)
    P2384 最短路 洛谷
    T1231 最优布线 codevs
    P3371 单源最短路径【模板】 洛谷
    spfa【模板】
    P1396 营救 洛谷
    解决Android加固多进程ptrace反调试的思路整理
    Android Dex文件格式解析
    360加固保so动态脱壳
  • 原文地址:https://www.cnblogs.com/redmoon/p/4587270.html
Copyright © 2020-2023  润新知