原文:http://blog.splayer.org/index.php/2010/03/媒体播放器三大底层架构简析/

媒体播放器三大底层架构

自射手影音推出以来,生活中越来越多的时间开始被代码和各种Bug-Fix淹没。埋头在田里太久,常常会在一时之间忘记身处何方。所以偶尔上来透透气,顺便将一些经验和心得与大家分享。

媒体播放工具,这里主要指视频播放,因为要面临庞大的兼容性和纷繁复杂的算法,从架构上看,能脱颖而出的体系屈指可数。大体来说业界主要有3大架

构:MPC、MPlayer和VLC。这3大架构及其衍生品占领了90%的市场,凡是用户能看到的免费媒体播放软件,无一不是源自这3大架构。

MPC/HC架构

MPC(Media Player

Classic)和它的后续者MPC-HC应该并列而说。MPC基于DirectShow架构,是Windows系统下元祖级别的播放器。包括KMP之流

最早也就是抄来MPC的代码再换个界面。MPCHC则在MPC的原作者Gabest渐渐退出开发后的继承者,MPCHC有很多创新特性,包括开始融入

ffmpeg和支持更多DirectX特性和DXVA等等。

优点:更直接的支持DXVA,对一些稀奇古怪的Windows平台上的格式可以通过调用第三方的Filter组件等,拥有更好的兼容性

缺点:有人说DirectShow是Windows中最难掌握的SDK,开发复杂;DirectShow允许第三方封装的特点也让兼容性和稳定性问题复杂化;第三方Filter出现异常时非常难以分析处理,更难以复用;

射手播放器的架构主要来自MPC-HC,但更多的融合了FFmpeg的优势,对DirectShow

Filter进行了多处改写,大大加强了对ffmpeg的利用,提高了解码稳定性,同时扩展了解码能力和兼容性。

mplayer架构

如果说MPC是Windows上的元祖,那么mplayer就是linux上媒体播放的元祖了。mplayer使用ffmpeg作为解码核心,也是与

ffmpeg结合最紧密的项目,ffmpeg的代码就是由mplayer来host,开发者群也有非常大的交集。借助linux开发/使用者的强大实

力,mplayer建立了要比DirectShow稳定的多的工作流程。超越ffmpeg本身的功能外,后来又通过反向工程使之可以调用Windows上

的DirectShow Filter DLL,让mplayer架构越来越吸引人,成为兼具稳定性和性能的优秀作品。

优点:稳定,兼容性也可以说相当不错

缺点:代码结构不清晰;纯C语言开发,难于阅读;显卡硬件加速还需要越过更多障碍

VLC架构

VLC是个后起之秀,开发速度的进展可以说是一只奇葩。虽然同样基于ffmpeg,但可能是相对于“左三年右三年缝缝补补又三年”的mplayer架构来说,VLC的架构在设计之初就很好的考虑到模块化开发,所以使它更吸引年轻的开发人员。成为近年发展非常快的架构。

优点:稳定,兼容性也可以说相当不错

缺点:纯C语言开发,难于阅读;硬件加速略有障碍

很多人都会发现,3大架构中都可以看到ffmpeg的名字。说起ffmpeg,那真是”One Ring to

rule them all,One Ring to find them, One Ring to bring them

all“。

在#ffmpeg有人和我说过,想不用ffmpeg去写媒体播放器,就像是造汽车而不用车轮。但是ffmpeg本身仅作为命令行工具或类库(常见的如

libavcodec)出现。终端用户很少能直接接触到ffmpeg,所以知名度也较小。ffmpeg的详细架构,下次有时间时再续……

*注1:所有优缺点均仅针对架构本身而言

*注2:文中观点为个人意见,仅供参考

linux底层播放器,[转载]媒体播放器三大底层架构:MPC、MPLAYER、VLC相关推荐

  1. 仿迅雷播放器教程 -- 媒体播放三大底层架构简析 (3)

    上一个教程中对比了数十种知名播放器,最终选定了VLC和MPlayer,那么这两种谁更胜一筹呢?  我们来看一看射手播放器作者的评价. 来源: <http://blog.splayer.org/i ...

  2. android 播放器 wav 无法播放,对于Android媒体播放器mp3与wav(For android media player mp3 vs. wav)...

    对于Android媒体播放器mp3与wav(For android media player mp3 vs. wav) 我想知道在Android媒体播放器上加载和播放小wav是否比较快的小文件更快. ...

  3. android百度播放器,终结媒体播放器 百度推新Android浏览器

    [PConline资讯]昨夜晚间,有消息称百度推出一款新的Android系统移动浏览器,该款移动浏览器最大的功能特色就是使得用户能够在没有安装媒体播放器的前提下播放视频,支持网页游戏,大幅度提高上网速 ...

  4. 浅谈Linux下的媒体播放器(转)

    浅谈Linux下的媒体播放器(转)[@more@]Linux开放实验室(Linux OpenLab)郝煜.季冰Linux开放实验室校园爱好者小组 陈强(农大).吴迪.雷凌.戴二红.刘志强(北科大)Li ...

  5. linux系统媒体播放器(media player)大全

    媒体播放器 是一种软件程序,可以使用它来播放多种类型的媒体文件,如音频和视频等. 常见的媒体播放器有 Windows Media Player.QuickTime Player.iTunes.Real ...

  6. 便携式媒体播放器:电路、工作、布线及其应用

    媒体播放器设备播放音频文件和数字视频.目前,有多种便携式媒体播放器可以简单地播放不同的数字音频.视频和图像文件.先进的媒体播放器支持游戏:录制视频并提供额外的存储空间.所以通常这个空间是存储卡槽的形式 ...

  7. 易语言html5播放器问题,易语言媒体播放器 - 已处理问题存放区 - 中国红客联盟 - Powered by HUC...

    前几天吧,我们副组长教了个媒体播放器器.所以呢今天我就写这个媒体播放器.好了话不多说,请看源码.不好的话,请多多指教. 组件:高级表格.按钮×2.滑块条×2.时钟.媒体播放. 首先添加一个高级表格组件 ...

  8. MediaPlayer( 媒体播放器),TelephonyManager(电话管理类),MediaRecorder(媒体录音机)

    媒体播放器 MediaPlayer 媒体播放器类可用于控制回放的音频/视频文件和流. 方法: setDataSource(String path);// 设置数据源(文件路径或http / rtsp ...

  9. 支持avi mkv的html视频插件,PS4更新加入媒体播放器 支持多种音频视频格式

    就在今天E3之后,PlayStation官方博客发表了公告称,新的媒体播放器功能已更新至PS4之中.这样使得你的PS4可以成为一个玩游戏之外的综合媒体播放设备,玩家可以通过Wifi或使用USB将电影和 ...

  10. 媒体播放器三大底层架构_射手科技zz

    媒体播放器三大底层架构_射手科技 自射手影音推出以来,生活中越来越多的时间开始被代码和各种Bug-Fix淹没.埋头在田里太久,常常会在一时之间忘记身处何方.所以偶尔上来透透气,顺便将一些经验和心得与大 ...

最新文章

  1. Spring Security 实战干货:自定义异常处理
  2. 整型和浮点型的区别_浮点整型强转的一个题目解析
  3. Kafka SCRAM和PLAIN实战
  4. 软件:推荐5款职场人必备的效率神器APP
  5. html画布图片不显示_如何在HTML5画布上显示图像
  6. JAVA HASHMAP 用法
  7. SaaS模式云数据仓库:持续保护云上数据及服务安全
  8. 未完待续:关于DB Link和SCN,你还需要知道的是...
  9. MySQL 主从复制与读写分离概念及架构分析
  10. Go 1.9中值得关注的几个变化
  11. 中国人民银行征信中心登录时无法输入密码,控件安装无效
  12. 一文读懂《理解未来的7个原则》
  13. 又拍云叶靖:OpenResty 在又拍云存储中的应用
  14. java公路车为什么会被喷,最全指南
  15. 变位词算法C语言,第二章 啊哈!算法(变位词)
  16. 服务器-Squid代理服务器及应用
  17. 三明治创业者档案12:吴皓的零号线
  18. 洛谷P1489 猫狗大战
  19. 大数据获取与预处理-会计欺诈检测
  20. [转载]综合运用:我的错题本(八3班吴潇同同学找供)

热门文章

  1. Xcelsius调用CR报表,总是弹出输入参数页面
  2. 计算机无法进行磁盘碎片整理,无法运行磁盘碎片整理
  3. 算法注册机编写扫盲之续篇---第三课
  4. n维空间被m个n-1维的“刀”最多切出多少块
  5. 亮瞎眼的十六进制颜色代码表
  6. matlab混沌映射,混沌映射MATLAB仿真.docx
  7. 高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序
  8. 2022东北四省赛 F. Tree Path (树剖 + 线段树维护堆)
  9. Surface Book重装系统步骤
  10. 推荐几个好用串口调试、检测的工具