众所周知,前段时间开通了知识星球,旨在为音视频的开发和学习提供更专业的问答氛围。

一个关于音视频领域专业问答的小圈子!!

同时也考虑在星球内出一些干货教程,回馈大家的信任,一番思索之后,决定在星球内出一个播放器的项目实践

为什么会选择做播放器呢?

在星球内也有很多朋友咨询从事音视频开发要如何入手?其实音视频开发根据业务形态的不同也会有不同的侧重点。

比如我做短视频 SDK 的,马上去做网络通话的优化,估计就要被优化了。同样,做音视频算法的来搞工程搭建一时半会也不见得能搞定。

尽管工作内容不同,但我们都还属于音视频开发范围内,所以说音视频也是一个很大的方向了。

而我个人觉得播放器会是音视频大方向下的一个很好入门切入点

关于音视频的概念有很多,比如 I、B、P 帧、容器格式、H.264 码流、编解码器等等,这些概念都是基础必须知道的,但如何在项目实践中去真正调试使用它呢?说的再多也不如实操一遍。

而做一个播放器是能够将这些概念融会贯通的,在解码时去体验每一帧的不同,在渲染时去感受 YUV 的格式差异,在音视频对齐时去领悟音画同步的真谛。

要如何去做一个播放器呢?

一个播放器可以很简单,也可以很复杂,但这不重要。

做播放器不是我们的目的,最终是为了在这个过程中掌握音视频开发、调试经验,并且熟悉 C++、FFmpeg 的用法,建立起系统而完善的概念。

目前我已经完成了整个项目的初步搭建,Github 地址如下:

https://github.com/glumes/PlanetPlayer

设想按照具体的业务实际来开发,核心是开发播放器 SDK ,对外提供 SDK 的能力,业务工程去依赖 SDK ,这就和目前的短视频 SDK 开发接入流程一样了。

理想情况是做一个跨平台的播放器 SDK ,因为写的是 C++ 代码,天然就有跨平台的基因。

但前期的运行都是在电脑上测试通过的,先保证自己电脑上的播放器项目可以正常运行,然后再去做移动端上的适配。

另外,整个 SDK 还引入了 Google Test 做单元测试,保证每个接口都可以测试通过,这也是现代软件开发流程中必备的了。而且关于 FFmpeg 的一些知识技巧,在播放器的正式代码中不一定需要,就可以放到单测中做总结了,存储一些代码以后用得上。

整个项目结构如下图所示:

对每个文件夹内容的具体说明如下:

  1. 依赖第三方库代码,比如 FFmpeg 等,目前用临时代码模拟顶替一下,后面会讲如何接入 FFmpeg。

  2. Demo 工程,演示如何接入 SDK 的具体工程代码,也是通过这个 Demo 工程来播放视频的。

  3. SDK 的接口头文件代码,对外暴露 include 里面的接口就行了

  4. SDK 的具体实现代码,也是后面的核心代码了

  5. 单测目录,Google Test 的单测内容都在这里了。

目前及后续的进展

目前还只是完成了工程的搭建, 写了一丢丢的代码。

我是用 CLion 做开发的,IDE 还是好用很多,但由于它是付费的,星球内不一定所有人都可以使用。

因此我特意配置了一下 VSCode 上的开发环境,捣鼓了 launch.json 的配置,也可以直接运行代码了,但建议还是使用 CLion 来开发,毕竟 VSCode 只是一个编辑器,和强大的 IDE 比还是少了不少功能。

关于播放器实践的专栏,后续大部分进展都会放在知识星球里面了,尤其是源码会在星球内同步更新,当然也会挑一些干货在公众号同步。

目前 音视频开发进阶知识星球 还在让利中,非常低的价格就可以获得业内一线开发人员的答疑解惑

与其在群里面提问石沉大海,不如来星球有问必答,而且这个价格还是管一年的哦,一年的时间可以说是相当划算了。

同时星球内非常欢迎大家提问,尤其是我不会的问题,我会去找业内好朋友请教,既回答了你的问题又帮助了我提高。

想要加入的可以通过扫如下二维码进星球哦,iPhone 用户如果不能访问小程序的话,也可以加我微信 ezglumes 拉你进星球。

一个音视频领域专业问答的小圈子!

推荐阅读:

音视频开发工作经验分享 || 视频版

OpenGL ES 学习资源分享

开通专辑 | 细数那些年写过的技术文章专辑

Android NDK 免费视频在线学习!!!

你想要的音视频开发资料库来了

推荐几个堪称教科书级别的 Android 音视频入门项目

觉得不错,点个在看呗~

星球专享 | 关于播放器的一次项目实践~~相关推荐

  1. 星球专享 | 播放器 FFmpeg 依赖库的配置

    上回书说道:星球专享 | 关于播放器的一次项目实践~~ 目前已经完成了项目的创建,是怎样一个项目呢? 首先是播放器 SDK ,也是项目最核心的模块,然后是对 SDK 进行单元测试的模块,最后是使用 S ...

  2. 音乐播放器类的Android项目源码

    收集了很多音乐播放器类的Android项目源码,非常不错的开源项目,会让你事半功倍,希望大家补充...谢谢! Android基于经纬度切歌的冲绳音乐播放器源码 http://neast.cn/foru ...

  3. ESP8266图形播放器 + 天气时钟显示项目更新

    <fontcolor=green>ESP8266图形播放器 + 天气时钟显示项目更新

  4. 优酷基于 Pipeline 的播放器开放式架构设计与实践

    作者 | 阿里文娱无线开发专家 韦兴华 责编 | 屠敏 背景 作为优酷APP中用户使用频度最高.停留时间最长的窗口,播放器一直以来都承载着用户最直接的内容消费体验.产品创新.业务突破能力.随着长时间的 ...

  5. 收集了很多音乐播放器类的Android项目源码,非常不错的开源项目

    JieCaoVideoPlayer立志成为Android平台使用最广泛的视频播放控件 http://neast.cn/forum.php?mod=viewthread&tid=61610&am ...

  6. 收集了很多音乐播放器类的Android项目源码,非常不错的开源项目【转】

    from:http://blog.csdn.net/java173842219/article/details/54096598 JieCaoVideoPlayer立志成为Android平台使用最广泛 ...

  7. C#播放器制作之一:项目简介及最终效果

    获取更多内容,请访问博主的个人博客 爱吃猫的小鱼干的Blog 一.简介 趁着小长假,自己开发了一款基于Windows Media Player的音乐及视频播放器.视频播放器的界面设计模仿自PotPla ...

  8. SkeyeWebPlayer.js H5播放器开发之webpack项目创建级编译配置(一)

    SkeyeWebPlayer.js H5播放器开发之播放器动态渲染video. 动态渲染是采用js进行创建dom.添加dom.添加class.style等方式操作dom元素.最终将播放器编译成成一个独 ...

  9. Vue实现仿音乐播放器2-新建Vue项目vuemusicplayer

    新建项目 进入到想新建项目的目录,在此处打开命令行窗口,然后输入: vue init webpack vuemusicplayer 其中 webpack 是模板,vuemusicplayer是项目名, ...

最新文章

  1. optimize table
  2. 1 项目里面如何打印log日志
  3. 贝叶斯网络之父Judea Pearl:新因果科学与数据科学、人工智能的思考
  4. Linux下使用两个线程协作完成一个任务的简易实现
  5. C++函数模板(二)引用
  6. 十万腾讯人,自救1000天
  7. Upload-Labs(16)
  8. android 库编译报错,Android Studio编译项目报错
  9. 初中英语和计算机融合的教学案例,信息技术与初中英语学科教学的深度融合
  10. PL(Planet)卫星群遥感数据介绍及应用
  11. HJ107 求解立方根(java详解,二分法详解)
  12. Unity http协议连接封装简易版(已测试可用)
  13. 网络通信学习笔记之 ———Socket网络通信
  14. Linux htop命令
  15. 【复习笔记】软件项目管理
  16. 数字图说个人信息数据泄露
  17. shell mysql并发_shell脚本中的多进程并发处理
  18. 2018年浙江检察机关办理公益诉讼案件5551件
  19. 黑客攻击无孔不入:连电影字幕都能被入侵
  20. U3D插件 CSVSerialize(CSV转Scriptable)

热门文章

  1. 清华计算机金融学,清华大学王牌专业排名 经济与金融专业上榜(10个)
  2. powerbi输入数据_PowerBI数据编辑与管理
  3. bi 建模流程图_搞懂PowerBI的数据建模
  4. 非常可乐(三个杯子倒水问题)
  5. 中国电信欢go建立话费话费异常预警(国际)
  6. 最吸引人的引流话术_抖音流广告引流【日引312人小白】
  7. 24小时切换简易时钟-51单片机
  8. LeetCode160.相交链表
  9. 【ALLEGRO】DRC错误代码
  10. apk包反编译,签名