播放器系列专栏-关于播放器项目的一个小实践

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

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

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

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

比如我做短视频 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 的一些知识技巧,在播放器的正式代码中不一定需要,就可以放到单测中做总结了,存储一些代码以后用得上。

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

image

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

  1. 依赖第三方库代码,比如 FFmpeg 等,目前用临时代码模拟顶替一下,后面会讲如何接入 FFmpeg。
  2. Demo 工程,演示如何接入 SDK 的具体工程代码,也是通过这个 Demo 工程来播放视频的。
  3. SDK 的接口头文件代码,对外暴露 include 里面的接口就行了
  4. SDK 的具体实现代码,也是后面的核心代码了
  5. 单测目录,Google Test 的单测内容都在这里了。

后续的进展

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

image

我是用 CLion 做开发的,IDE 还是好用很多,但由于它是付费的,星球内不一定所有人都可以使用,因此我特意配置了一下 VSCode 上的开发环境,捣鼓了 launch.json 的配置,也可以直接运行代码了,但建议还是使用 CLion 来开发,毕竟 VSCode 只是一个编辑器,和强大的 IDE 比还是少了不少功能。

image

重点:

说了那么多,接下来就是重点部分了。

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

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

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容