VLC和WebRTC等开源库关于硬解软解的策略

一、移动端OS角度硬解能力支持情况
Android
4.1.2以前:    不支持
4.1.2-5.0     Java侧MediaCodec
5.0以上    Java侧MediaCodec,C侧nativeMediaCodec

IOS
8.0以前    不支持硬编硬解,仅软编软解
8.0及以后    支持硬编硬解VideoToolboxDecoder

二、开源库角度
WebRTC
检测是否支持硬解,如果支持,使用OpenGL创建SurfaceView,设置给硬解

VLC
4.3及以上使用MediaCodec硬解
[4.1-4.3) 检测是否支持硬解

三、自研播放器&采集发布硬编解策略选择

【方案一】

【方案二】:仅判断操作系统,OS<5.0使用ffmpeg软解;OS>5.0使用ndkMediaCodec硬解码

 

【方案三】:完美方案:先判断操作系统版本:

小于4.1.2使用ffmpeg软解;

[4.1.2,4.3)优先使用java层mediaCodec硬解,同时检测硬解效果是否达标,如果不达标切换为软解;

[4.3,5.0)使用java层mediaCodec硬解;

[5.0,+∞),使用C层的ndkMediaCodec硬解;

因为4.3版本以后,mediaCodec硬解能力作为平台兼容性测试CTS(compatility test suit)必备基础,所以4.3及以上无需再检测硬解是否达标。

 

结论:鉴于当前软解效果也不错,因此我们使用方案二简单处理,后期看效果再判断是否启动方案三优化。

时间: 2024-08-02 08:48:34

VLC和WebRTC等开源库关于硬解软解的策略的相关文章

站在巨人的肩膀上,C++开源库大全

程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等.   标准库 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分. Standard Template Library:标准模板库 C POSIX library : POSIX系统的C标准库规范 ISO C++ Standards Committee :C++标准委员会 框架 C++通用框架

备战未来,6款优秀的AR/VR开源库推荐

如果说去年是" VR 元年",那今年则可以称得上是 AR 的爆发年.2017 年,VR 市场趋于平静,技术逐渐沉淀;而 AR 增强现实技术的关注度却在不断升温.前段时间发布的支持 AR 的 iOS11 ,也玩出了各种花样.接下来,推荐几款优秀的 AR/VR 开源库,希望能对大家有所帮助. 1.AR.js AR.js 是一款应用于 Web 的高效增强现实(AR)库,基于 three.js + jsartoolkit5,无需安装.它适用于任何带有 webgl 和 webrtc 的手机,且运

使用开源库 MagicalRecord 操作 CoreData

MagicalRecord  https://github.com/magicalpanda/MagicalRecord 注意:  MagicalRecord 在 ARC 下运作,Core Data 是 ORM 方案,据说带来的麻烦比好处多,且 Core Data 建立的表没有主键,但对于对数据库没有性能要求,进行简单的数据操作完全够用,能简化无数的代码量. MagicalRecord In software engineering, the active record pattern is a

我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍

GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/Android-Librarys-Top-100.md 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并

C++开源库,欢迎补充。

C++在"商业应用"方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成 Web应 用.当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了.主力原因就是开源的软件.基础软件(比如并发原生支持,比如Android必定要推出原生的SDK).各种跨平台应用的出现.   开源C++库必须具有以下特点:必须是成熟的产品.跨平台的产

使用开源库 SVPullToRefresh 实现上拉加载下拉刷新

SVPullToRefresh开源库地址 https://github.com/samvermette/SVPullToRefresh 将整个文件夹SVPullToRefresh拖入工程中并引入头文件即可 注意编译时有一个方法快被弃用了 - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode   工程源码 RootViewCo

27个提升效率的iOS开源库推荐

DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core Data助手) Chameleon(UI,色彩框架) Alamofire(Swift 网络) TextFieldEffects (UI,自定义外观的文本区域) GPUImage(快速图片处理) iRate(获取用户评价) GameCenterManager(快速管理游戏中心) PKRevealController 2

Android 使用SwipeActionAdapter开源库实现简单列表的左右滑动操作

  我们做listview左右滑动操作时,一般中情况下,都是像QQ那样,左滑弹出操作菜单(删除.编辑),然后选择菜单操作: 这样的效果不可谓不好,算是非常经典. 另外,有少数的APP,尤其是任务管理类的APP,更加注重listview的操作交互,例如ToDoList及滴答清单,这两个APP对任务的操作是直接通过滑动列表进行操作的:效果图如下:   gtihub上有一个开源项目,已经很好的实现了对该效果:https://github.com/wdullaer/SwipeActionAdapter 

[译] 当发布安卓开源库时我希望知道的东西

本文讲的是[译] 当发布安卓开源库时我希望知道的东西, 原文地址:Things I wish I knew when I started building Android SDK/Libraries 原文作者:本文已获作者 Nishant Srivastava 授权 译文出自:掘金翻译计划 译者:jifaxu 校对者:BoilerYao, gaozp 当发布安卓开源库时我希望知道的东西 一切要从安卓开发者开发自己的"超酷炫应用"开始说起,他们中的大多数会在这个过程中遇到一系列问题,而他