[✔️]在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的过程,作者使用了多线程。


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


目录
相关文章
|
26天前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
102 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
2月前
|
XML Java Android开发
FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer
GSYVideoPlayer是一款国产移动端视频播放器,支持弹幕、滤镜、广告等功能,采用IJKPlayer、Media3(EXOPlayer)、MediaPlayer及AliPlayer多种内核。截至2024年8月,其GitHub星标数达2万。集成时需使用新版Android Studio,并按特定步骤配置依赖与权限。提供了NormalGSYVideoPlayer、GSYADVideoPlayer及ListGSYVideoPlayer三种控件,支持HLS、RTMP等多种直播链接。
97 18
FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer
|
2月前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
EasyPusher是一款国产RTSP直播录制推流客户端工具,支持Windows、Linux、Android及iOS等系统。尽管其GitHub仓库(安卓版:https://github.com/EasyDarwin/EasyPusher-Android)已多年未更新,但通过一系列改造,如升级SDK版本、迁移到AndroidX、指定本地NDK版本及更新Gradle版本等,仍可在最新Android Studio上运行。以下是针对Android Studio Dolphin版本的具体改造步骤。
59 3
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
150 0
|
编解码 搜索推荐 Java
|
人工智能 搜索推荐 定位技术
CorelDRAW2023新版本有哪些全新的亮点?
CorelDRAW作为一款专业的平面设计软件,拥有着庞大的用户群体,而每年春天CorelDRAW新版本的发布也牵动着每一位小伙伴的心。今年也不例外,最近一个月来,网上爆料了很多CorelDRAW新版本的消息,而现在CorelDRAW终于传来了好消息—2023年3月即将发布全新版本,那本次的新版本会有哪些不一样又有哪些新功能呢?我们一起来预测一下吧。
207 0
西门子LOGO!编程软件V7.0版本特色功能之数据归档
LOGO!0BA7支持将数据记录存储到内部存储区或SD卡上,使用标准的SD卡支持FAT12、FAT16或FAT32格式,内部容量最大8G,传输速度为每秒6兆字节,而SIMATIC记忆卡使用FAT格式,非常适合小数据包,具有更长的使用寿命和更多的使用次数。
西门子LOGO!编程软件V7.0版本特色功能之数据归档
|
移动开发 网络协议 Java
移动端IM产品RainbowChat[专业版] iOS端 v6.0版已发布!
RainbowChat是一套基于开源IM聊天框架 MobileIMSDK 的产品级移动端IM系统。RainbowChat源于真实运营的产品,解决了大量的屏幕适配、细节优化、机器兼容问题(可自行下载体验:专业版下载安装)。 * RainbowChat可能是市面上提供im即时通讯聊天源码的,唯一一款同时支持TCP、UDP两种通信协议的IM产品(通信层基于开源IM聊天框架 MobileIMSDK 实现)。
141 0
移动端IM产品RainbowChat[专业版] iOS端 v6.0版已发布!
|
消息中间件 缓存 数据库
短视频app制作,架构变迁对源码开发的影响
短视频app制作,架构变迁对源码开发的影响
|
Web App开发 编解码 JavaScript
优酷播放体验优化实战(六)--Electron跨平台进阶:Native播放器融合
随着桌面应用开发技术的发展,程序的跨平台性和代码的维护成本显得尤为重要,目前优酷Windows平台采用QT作为UI的主要开发方案,DuiLib辅助一些扩展插件开发,Mac平台采用原生的Native UI开发,由于历史原因并没有将Windows端的QT框架迁移到Mac端,两端分别维护耗费不同人力。
2171 0
优酷播放体验优化实战(六)--Electron跨平台进阶:Native播放器融合