[✔️]在cocos2dx中播放视频方案调研

简介: [✔️]在cocos2dx中播放视频方案调研

cocos2dx 在Windows上并没有实现视频播放


可选方案


lib 协议 大小 备注
FFMpeg GPL/LGPL github download
OpenCV BSD 5-6M 任意使用,只能显示图形,不能显示声音
x264 github
vlc 优点:支持win、mac、Android,支持http等流媒体
缺点:Android包体16M,Windows 2M
教程
ljkPlayer bilibili基于ffmpeg开发,只支持Android,ios
ExoPlayer Google提供的Android视频播放器
优点:包小,只有1.1M
缺点:Android5.0之后Codec架构调整,ExoPlayer没有做过多的兼容,只适合简单的视频播放场景,只支持Android
CRI Sofdec 成熟的商业视频中间件,首个平台授权11w,追加平台6w
theoraplayer 基于ffmpeg搞的一个demo
libvpx BSD
Theora 播放特定的格式 因为是BSD协议,和H264是竞争关系,虽然现在不维护了,不过这也直接导致H264开源


FFMpeg GitHub Builds


5.1 avcodec-59.dll avformat-59.dll
lgpl 50M 12.2M
gpl 74M 12.4M
4.4.3 avcodec-58.dll avformat-58.dll
lgpl 46M 12.2M
gpl 71M 12.26M


以上的FFMpeg对应的dll都非常大,但是我在我的电脑上发现钉钉的软件也有使用FFMpeg,但是他们的avcodec.dll只有10M+。


经过后来自己的编译发现,如果在configure的配置中增加一些优化选项,的确是10M+,所以GitHub上的builds,大概率都是没有增加任何的优化选项,仓库编译的逻辑我也懒得看了。


编译文件大小


ffmpeg-file win(lib/dll) android armv8-a (a/so)
avcodec 58k/8.2M 12.3M/7.42M
avfilter 19k/2.03M 3.74M/2.04M
avformat 41k/1.64M 3.87M/1.68M
avutil 118k/473k 490k/282K
swresample 7k/165k 114k/65K
swscal 9k/456k 478K/265K
总计 249k/12.9M 21M/11.7M


结果


我最终使用的FFMpeg v4.2.2,在GitHub上也找到了这种方案的开源代码,简单review了下代码,其原理是通过FFMpeg解析出视频每一帧的纹理数据,并存储在一个cache中,在使用的时候,通过update驱动frame的前进,然后不停的从cache中获取对应frame的纹理,然后渲染出来,其中decode的过程,作者使用了多线程。


音频作者并没有处理,需要后续自己补充上,具体效果后续同步下结果。


目录
相关文章
|
定位技术 CDN
开源直播源码平台处理卡顿问题技巧方案
开源直播源码加速器功能就成功实现了,加速器功能有助于提高直播平台的竞争力,并满足用户对高质量、稳定和流畅的直播体验的需求,这也让加速器功能成为开源直播源码平台的重要功能之一。
开源直播源码平台处理卡顿问题技巧方案
|
缓存 Serverless 对象存储
iOS开发体验优化方案
随着Flutter等跨端框架的出现,业务开发同学经常需要在Android/IOS上跨端进行业务开发,问题定位等。新的不熟悉的环境的搭建总会遇到各种各样的问题,导致搭建失败,特别是IOS开发环境,是最复杂的,不仅环境搭建繁琐,而且切分支后的打包速度很慢,所以我们设计实现了两个工具,用于优化闲鱼IOS开发体验。
3220 0
iOS开发体验优化方案
|
iOS开发
|
Web App开发 编解码 JavaScript
优酷播放体验优化实战(六)--Electron跨平台进阶:Native播放器融合
随着桌面应用开发技术的发展,程序的跨平台性和代码的维护成本显得尤为重要,目前优酷Windows平台采用QT作为UI的主要开发方案,DuiLib辅助一些扩展插件开发,Mac平台采用原生的Native UI开发,由于历史原因并没有将Windows端的QT框架迁移到Mac端,两端分别维护耗费不同人力。
2214 0
优酷播放体验优化实战(六)--Electron跨平台进阶:Native播放器融合
|
缓存 前端开发 API
优酷播放体验优化实战(七)--优酷高性能弹幕渲染技术大揭秘
优酷高性能弹幕渲染引擎的目标,是在全平台实现对弹幕内容的高效渲染。渲染的内容包括文本、emoji、普通图片、apng动图和3D mesh等元素,并且支持节奏弹幕、燃弹幕、弹幕穿人、流光弹幕等各种特效玩法。下面,将对优酷高性能弹幕渲染引擎所涉及的技术做一次大揭秘。
1534 0
优酷播放体验优化实战(七)--优酷高性能弹幕渲染技术大揭秘
|
传感器 缓存 运维
优酷播放体验优化实战(四)--“三高”音频渲染引擎设计
随着高清在用户观影过程中的深度普及,人们已经不仅仅满足于视的享受,更需要听的保证。如何稳定保障音质,甚至增加更多的音效玩法需要一套强大的系统将数据传输、音频实时处理技术、音频输出有效地整合起来;而作为一个可以商业化应用的系统,其应具有高性能、高复用、高可靠的特点,在本文我们将探讨如何打造一套具备这些特性的音频渲染引擎。
303 0
优酷播放体验优化实战(四)--“三高”音频渲染引擎设计
|
域名解析 编解码 缓存
优酷播放体验优化实战(一)--实战概览
《优酷播放体验优化实战》系列文章持续放送中。 本文将从不同类型播放问题出发,阐述优酷技术团队在播放体验优化实战中的经验
660 0
优酷播放体验优化实战(一)--实战概览
|
Web App开发 移动开发 监控
【干货】通过真机实现页面自动化适配(含直播回放)
本文根据4月15日淘系技术前端团队出品的「阿里淘系用户体验优化前端实战系列直播」——《通过真机实现页面自动化适配》整理而成。
|
缓存 Serverless 对象存储
iOS系统开发提升体验优化方案
随着Flutter等跨端框架的出现,业务开发同学经常需要在Android/IOS上跨端进行业务开发,问题定位等。新的不熟悉的环境的搭建总会遇到各种各样的问题,导致搭建失败,特别是IOS开发环境,是最复杂的,不仅环境搭建繁琐,而且切分支后的打包速度很慢,所以我们设计实现了两个工具,用于优化闲鱼IOS开发体验。