Android视频直播概要

视频直播大体框架如上图

1.直播整体流程:

直播的整体流程如下:录制->编码->网络传输->解码->播放。根据该流程分为以下技术点:

怎样录制直播视频

怎样实时上传直播视频

怎样播放直播视频

直播间的用户是如何交互

2.视频直播协议:

        2.1精简一对多业务模型:


        2.2各直播协议的对比:


RTMP--->(Real Time Messaging Protocol)是 Macromedia 开发的一套视频直播协议,现在属于 Adobe。

使用RTMP技术的流媒体系统有一个非常明显的特点:使用 Flash Player 作为播放器客户端,而Flash Player 现在已经安装在了全世界将近99%的PC上,因此一般情况下收看RTMP流媒体系统的视音频是不需要安装插件的。用户只需要打开网页,就可以直接收看流媒体。和 HLS 一样都可以应用于视频直播,区别是 RTMP 基于 flash 无法在 iOS 的浏览器里播放,但是实时性比 HLS 要好。所以一般使用这种协议来上传视频流,也就是视频流推送到服务器。

HLS--->是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。

HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。每一个 .m3u8 文件,分别对应若干个 ts 文件,这些 ts 文件才是真正存放视频的数据,m3u8 文件只是存放了一些 ts 文件的配置信息和相关路径,当视频播放时,.m3u8 是动态改变的,video 标签会解析这个文件,并找到对应的 ts 文件来播放。

简单归纳:首先将一个完整视频分成多个TS视频文件,用户下载m3u8文件,通过m3u8文件的索引地址  来播放具体的每个小段视频。

HLS的请求播放过程:

        1.HTTP 请求 m3u8 的 url。

        2.服务端返回一个 m3u8 的播放列表,这个播放列表是实时更新的,一般一次给出5段数据的 url。

        3.客户端解析 m3u8 的播放列表,再按序请求每一段的 url,获取 ts 数据流。

HLS的缺点是直播时延时较大,优点是:

        1.传播性好,利于分享等操作。

        2.可以动态发布,有利于实时迭代产品需求并迅速上线。

        3.不用安装 App,直接打开浏览器即可。

HTTP-FLV即使用HTTP协议来流式的传输媒体内容,直接向后台上传编码后的流媒体数据。相对于RTMP,HTTP更简单和广为人知,而且不担心被Adobe的专利绑架。内容延迟同样可以做到2~5秒,打开速度更快,因为HTTP本身没有复杂的状态交互。所以从延迟角度来看,HTTP-FLV要优于RTMP。

3.播放直播视频(ijkPlayer):

我自己使用的是一款名为ijkPlayer的三方库,该库由b站开源,它是一款基于FFmpeg的轻量级Android/iOS视频播放库。

FFmpeg的是全球领先的多媒体框架,能够解码,编码, 转码,压缩,复用,播放大部分的视频格式。它包含了非常先进的音频/视频编解码库libavcodec。视频播放也可以基于Vitamio库,但是对于非个人移动应用均需购买Vitamio使用授权。而这款ijkPlayer则不需要商业授权。

         3.1:ijkplayer基于 ffmpeg 的跨平台播放器,实现的特性有:

        移除 FFmpeg 中不常用的特性以减小体积。

        对一些在线视频播放的 BUG 修复

        支持安卓 API 9-22 和 iOS 5.1.1-8.3.X

        使用各种平台原生的渲染方式进行优化

        ijkplayer 实现了跨平台功能,支持 Android 和 iOS 双平台;API 易于集成;编译配置可裁剪,方便控制安装包大小;支持 硬件加速解码,更加省电。

4.引入ijkplayer(两种方式):

         4.1---在gradle中引入:

        

这种方案引入比较简单快捷,缺点是ijkPlayer的某些特点无法完全发挥,可能无法满足某些特定的较偏的业务逻辑。

        4.2---编译源码得到

        以Ubuntu为例,Ubuntu需要配置JDK、Android SDK、Android NDK,然后再安装Git, yasm等工具,具体可以参考这篇文章

最后要提到的一点就是,github上面的官方demo下载下来直接运行的话会报错:


因为没有完成源码编译形成的so库,这里采用的方式是:直接通过在Gradle中引入aar库(aar库会包含对应的so库等文件)来运行Demo。

在Ubuntu、Mac或Linux其他发行版等系统下编译源码得到。

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

推荐阅读更多精彩内容