Android怎么开发自己底层的NuPlayer音视频播放器框架

怎么开发自己底层的播放器框架
引言
远离博客好久了 , 肯定不是卷款跑路了啊(其实我也想 , 但是就是没有款啊)!真实原因是因为一直在忙于新的一个领域那就是底层音视频播放器框架的搭建 , 此时此刻终于干的差不多了(虽然其中还是有许多的不足 , 和需要改进的 , 但是万事开头难吗 , 还是有一种小有成就的感觉!) 。本篇博客不会大书特书音视频领域的相关知识 , 因为它太庞大了 , 那我写这篇博客的目的是什么呢 , 主要是总结概括一下如何搭建自己的底层音视频播放器框架的 , 我们还是来简单看下的音视频播放框架 , 其核心的框架图可以用如下的三张图来高度的概括:
上述三张图我认为是对音视频播放框架整理的最好的了 , 如果是我整理出来的就好了(它们来源于 框架完全解析 - 概览) , 而我们这里所说的怎么开发自己底层的音视频播放器框架 , 就是开发一套自己的底层播放框架来替换上图中的 。
这里读者朋友也许会问了 , 为啥好好的 自己的底层播放器框架不使用而是要自己开发一套呢 , 就我个人而言原因无外乎如下几点:
重要的事情说三遍,说三遍 , 三遍:
1.如果对音视频领域不感兴趣 , 可以跳过此博客
2.如果是单纯应用层开发音视频播放器 , 可以跳过此博客
此博客主要是送给那些有开发底层音视频播放器框架的朋友 , 就是和音视频框架那一层的播放框架 。因为这一块是各个soc厂的核心 , 所以这一块的资料特别少 , 刚开发的时候我么也迷茫过 , 彷徨过 , 心里想要是有这一块的资料多好啊 , 那怕是细枝末节也行啊 , 可是没有 , 所以我就将我们开发过程中涉及的难点问题 , 或者核心问题放出来希望能帮助到大伙 。
一.底层音视频播放器选型
也许朋友看到这个标题 , 心里会一阵突突 , 啥叫做选型 , 我们又不是搞硬件开发 。我们知道开发任何一个模块或者相关功能都不可能一蹴而就 , 肯定有一个过程 , 而开发底层音视频播放器框架也是如此 , 能看到这里的读者肯定知道底层的音视频播放器框架核心是 , 而我们要做的一定是开发一套替换它 , 那么现在有没有比较好的底层音视频播放器开源框架呢 , 那一层肯定是没有的 , 但是应用层还是有很多的 , 譬如、、VLC等 , 关于它们之间的优劣可以参见博客 、、VLC播放器综合比较  , 虽然他们是属于端的 , 但是它们之间的设计思路还是值得我们进行相关学习的 , 我们只需要把应用层的开源播放框架移植到 底层来就可以了 , 这里我们最终选择了作为参考模型来开发我们自己的底层的音视频播放器框架(至于怎么移植这个就是考验各位的功力了 , 而这也是我近期的工作重心了) 。这里我为啥选择作为参考呢 , 当然是它有许多可取之处了 , 首先它的可扩展性强 , 源码相对简单 , 支持的视频封装和编解码格式比较多 。这里我们简单看下的看框架图,如下:
二.具体开发中要攻克的核心问题
通过上面的一番操作 , 我们自己的底层音视频播放器框架参考选型已经OK了 , 但是这还仅仅只是一个参考选型 , 那么要怎么对接到我们的系统中去呢 。我这里总结了 , 有如下的几个必须攻克的点: