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


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


目录
相关文章
C++ 捕获所有异常并拿到错误原因的方法
C++ 捕获所有异常并拿到错误原因的方法
458 0
|
设计模式 算法 C语言
技术进步与个人成长:从代码到思维的演变
技术不仅塑造了我们的工作方式,更深刻地影响了我们的思维模式。本文探讨了在编程实践中,个人技术能力和思维方式如何相互影响和提升,重点讨论了一些关键的经验和感悟,以及这些经历对职业发展的深远影响。
279 0
|
人工智能 自然语言处理
RWKV-7:RWKV系列开源最新的大模型架构,具有强大的上下文学习能力,超越传统的Attention范式
RWKV-7是RWKV系列的最新大模型架构版本,具有强大的上下文学习能力,超越了传统的attention和linear attention范式。本文详细介绍了RWKV-7的主要功能、技术原理及其在多语言处理、文本生成等领域的应用场景。
927 7
RWKV-7:RWKV系列开源最新的大模型架构,具有强大的上下文学习能力,超越传统的Attention范式
|
Linux Shell Python
如何在 Linux 中安装和使用 pipx?
如何在 Linux 中安装和使用 pipx?
2356 0
如何在 Linux 中安装和使用 pipx?
小功能⭐️Unity 如何判断物体是否在摄像机视野内或外
小功能⭐️Unity 如何判断物体是否在摄像机视野内或外
|
存储 Kubernetes API
在K8S中,陈述⼀下创建Pod的流程?
在K8S中,陈述⼀下创建Pod的流程?
|
人工智能 算法 定位技术
【推荐100个unity插件之1】2d使用A*Pathfinding插件实现敌人AI,并自动躲避障碍物
【推荐100个unity插件之1】2d使用A*Pathfinding插件实现敌人AI,并自动躲避障碍物
1045 0
|
机器学习/深度学习 JSON 文字识别
OCR文字识别技术总结(一)
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,经过检测暗、亮的模式肯定其形状,而后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并经过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提升识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也随之产生。
6295 0
OCR文字识别技术总结(一)
|
算法 搜索推荐
LeetCode算法小抄--快速排序详解及应用
LeetCode算法小抄--快速排序详解及应用