android 视频直播

一、直播原理

直播本质是实时推送/拉取过来音视频数据

二、相关协议

直播协议主要分为三种:RTMP协议、FLV、HLS。(视频直播源有效性测试工具:VLC,这是一个开源的跨平台多媒体直播器)

(1)RTMP

一个互联网TCP/IP五层体系结构中应用层协议,可以用来推送又可以直播,基本单元称为消息,可以查分为更小的单元:消息块。

(2)FLV

FLV协议是在大块的视频和音频头部加入一些标志性信息,在延迟表现和大规模并发方面很成熟,适合手机端APP直播。

(3)HLS

苹果推出的解决方案,将视频分为5-10秒的视频小分片,然后用m3u8索引表进行管理;HLS在IPHONE和大部分Android手机浏览器的支持非常给力,常用于QQ和朋友圈的URL分享。

三、M3U8

m3u8文件是一个索引文件,打开它时,根据里面的索引找到对应的音视频网络地址进行播放。

优点:主要是可以做多码率的适配,根据网络带宽,客户端会选择一个适合自己码率的文件进行播放。

四、播放框架

Vitamio视频播放框架,支持播放主流格式的音视频、网络视频流(http/rtsp/mms);

使用流程:下载SDK→拷贝so文件到案例工程jniLibs→加入权限→编译→引用VideoView→初始化Vitamio;

五、示例

下载依赖,下载地址:https://download.youkuaiyun.com/download/u011897782/10507591

案例下载地址:https://download.youkuaiyun.com/download/u011897782/10507684



一: 使用javacv来实现,最终也是用过ffmpeg来进行编码和推流,javacv实现到可以直接接收摄像头的帧数据 需要自己实现的代码只是打开摄像头,写一个SurfaceView进行预览,然后实现PreviewCallback将摄像头每一帧的数据交给javacv即可 javacv地址:https://github.com/bytedeco/javacv demo地址:https://github.com/beautifulSoup/RtmpRecoder/tree/master 二: 使用Android自带的编码工具,可实现硬编码,这里有一个国内大神开源的封装很完善的的库yasea,第一种方法需要实现的Camera采集部分也一起封装好了,进行一些简单配置就可以实现编码推流,并且yasea目前已经直接支持摄像头的热切换,和各种滤镜效果 yasea地址(内置demo):https://github.com/begeekmyfriend/yasea 服务器 流媒体服务器我用的是srs,项目地址:https://github.com/ossrs/srs 关于srs的编译、配置、部署、在官方wiki中已经写的很详细了,并且srs同样是国内开发人员开源的项目,有全中文的文档,看起来很方便 这里有最基本的简单编译部署过程 Android直播实现(二)srs流媒体服务器部署 播放器 android端的播放使用vitamio,还是国内的开源播放器,是不是感觉国内的前辈们越来越屌了^~^! vitamio支持几乎所有常见的的视频格式和流媒体协议 vitamio地址(内置demo):https://github.com/yixia/VitamioBundle 这里使用的是yaesa库,先介绍一下直播实现的流程:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值