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

简介: 一、移动端OS角度硬解能力支持情况Android4.1.2以前:    不支持4.1.2-5.0     Java侧MediaCodec5.0以上    Java侧MediaCodec,C侧nativeMediaCodecIOS8.
一、移动端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)优先使用javamediaCodec硬解,同时检测硬解效果是否达标,如果不达标切换为软解;

[4.3,5.0)使用javamediaCodec硬解;

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

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

 

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


相关文章
【WebRTC 入门教程】全面解析WebRTC:从底层原理到Qt和FFmpeg的集成应用
【WebRTC 入门教程】全面解析WebRTC:从底层原理到Qt和FFmpeg的集成应用
3680 1
庖丁解牛之-Android平台RTSP|RTMP播放器设计
我们在做Android平台RTSP或者RTMP播放器开发的时候,需要注意的点非常多,以下,以大牛直播SDK(官方)的接口为例,大概介绍下相关接口设计:
164 0
WebRTC简介
WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。
768 0
WebRTC简介
从FFplay到自定义播放器:构建高性能多媒体应用程序的进阶之路
【10月更文挑战第15天】多媒体应用程序的开发是一个复杂的过程,尤其是在追求高性能和定制化体验时。本文将引导你从使用FFplay作为起点,逐步过渡到构建一个完全自定义的播放器。我们将探讨FFmpeg库的高级用法、多媒体同步原理、跨平台开发注意事项,以及如何实现用户界面与音视频解码的无缝集成。
124 1
Linux平台Unity下RTMP|RTSP低延迟播放器技术实现
本文介绍了在国产操作系统及Linux平台上,利用Unity实现RTMP/RTSP直播播放的方法。通过设置原生播放模块的回调函数,可将解码后的YUV数据传递给Unity进行渲染,实现低延迟播放。此外,还提供了播放器启动、参数配置及停止的相关代码示例,并概述了如何在Unity中更新纹理以显示视频帧。随着国产操作系统的发展,此类跨平台直播解决方案的需求日益增长,为开发者提供了灵活高效的开发方式。
117 6
FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流
OBS(Open Broadcaster Software)是一款开源、跨平台的直播和和Linux。官网为<https://obsproject.com/>。要使用OBS进行直播,需执行四步:1) 下载并安装OBS Studio(<https://obsproject.com/download>),2) 启动流媒体服务器如MediaMTX,生成RTMP推流地址,3) 打开OBS Studio,设置直播服务为自定义RTMP服务器(127.0.0.1:1935/stream),调整视频分辨率,4) 添加视频来源并开始直播。同时,通过FFmpeg的拉流程序验证直播功能正常。
260 4
FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流
详尽分享视频相关的hls协议、VLC播放器、m3u文件的播放
详尽分享视频相关的hls协议、VLC播放器、m3u文件的播放
155 0
WebRTC简介及使用
WebRTC简介及使用
335 0
Unity3D下如何实现跨平台低延迟的RTMP、RTSP播放
好多开发者,希望我们能探讨下Unity平台RTMP或RTSP直播流数据播放和录制相关的模块,实际上,这块流程我们已经聊过多次,无非就是通过原生的RTMP或者RTSP模块,先从协议层拉取到数据,并解包解码,回调YUV或RGB数据,然后,在Unity创建响应的shader,获取图像数据填充纹理即可,说起来流程很简单,但是每个环节,如果做到极致体验,都非常难。简单来说,多一次拷贝,都会增大性能瓶颈或延迟。
211 0