Android&iOS视频直播之旅
现在的移动互联网时代,大家的网速真是越来越快,高带宽的WIFI和覆盖率极大的4G,4G+把手机观看视频直播推上了风口浪尖,越来越多的应用在玩手机视频直播,我们做的应用里也要嵌入视频直播。
这篇文章里我们暂时不讨论视频的推流(视频推流一般使用RTMP推流协议,强烈建议使用OBS进行推流,亲测十分强大)。我们在这里仅仅来聊聊视频直播拉流的框架级方案(当然大家也可以自己尝试去写一个支持实时流媒体的播放器出来,现在的主流播放器基本都是去修改变异FFmpeg实现的)。
在尝试嵌入直播功能时,我寻找了许多解决方案,包括阿里云直播,腾讯云直播,云直播,保利卫视直播,乐视云直播,至于客户端播放器也选择了许多,比如腾讯云提供的SDK,云直播提供的SDK,保利威视提供的JS接口,Vitamio, ExoMedia,VCL。
现在我们依次简单介绍下这些平台或者框架:
1、阿里云直播
阿里云直播实际上并没有提供实际性的支持,只是提供了一个框架级的解决方案,进到阿里云直播的介绍页面,只是提供了一个框架图,所以如果你不是为大平台做直播的话,不建议真的自己去弄这个架构。
2、腾讯云直播
腾讯云直播是在2015年下半年才正式上线了,提供了比较好的支持,里面有直播频道管理,拉流转码管理,还提供了h5嵌入的解决方案以及SDK级的解决方案。但是腾讯云直播的播放SDK并不是很完善,比如就不支持自适应控件大小调整视频的Size,并且不支持播放RTMP的视频源。
3、云直播
云直播会提供给用户一个账户以及服务码,用户需要通过直播云的SDK获取使用它的推流Demo进行推流,并且,一个频道的直播拉流地址会每次都改变,这个给观看视频增加了难度,直播云也同意提供了一个播放器去播放rtmp以及hls,但是做的实在不敢恭维,缺少了许多必须的功能,比如视频无法动态大小调整,无法进行视频全屏切换,后台驻留Crash等等,所以基本不用考虑使用直播云的播放sdk。
4、保利威视
保利威视的后台管理和腾讯云比较接近,同样有频道管理,但是在后台没有给出推流地址,不过保利威视的技术人员说可以提供,但是保利威视不能给出拉流地址,只允许用户用WebView嵌入JS的方式去播放直播,这给客户端造成了大量的麻烦,比如由于JS是使用了h5的Video标签,无法对外提供用户点击了全屏,点击了暂停等用户行为的暴露借口,使得客户端很难在原生层定制播放器所在的页面,同样,播放器的样式也受到了极大的限制。
5、乐视云直播
乐视云直播我没有实际使用过,只看过它的官方文档,光看文档能够看出来乐视云直播的后台管理和腾讯云直播相差不大,乐视也提供了一个播放SDK,这个SDK明显要比腾讯的好一些,文档也更全面一点,功能也更丰富。但是看文档只支持RTMP的直播拉流,并不支持HLS的样子。有机会我会去耍耍。
6、Vitamio
Vitamio中文又称维他蜜,是北京的一个公司制作的商业开源万能播放器,基本你能想到的播放协议,它全部都能支持,Vitamio目前的Android版本已经到了5.0了,2015年的时候刚出了iOS版的Vitamio播放器。但是毕竟是商业播放器,它不允许公司应用非授权情况下使用,听说授权的价格十分昂贵,如果不授权,也得不到Vitamio团队的技术支持,Vitamio Android版虽然到了5.0版本了,但是在我用下来后,还是问题很多的。比较致命的是
1.经常出现声轨丢失(iOS版正常,同样的播放地址,Android版却丢失了声音)
2.视频播放中或者暂停中如果切到后台或者其他页面(onStop后)会自动停止播放,并且在重新进入的时候自动从头播放
3.视频Seek经常失败,或者不准确
4.播放hls视频源时经常会莫名结束(官方说会通过设置超时时间来解决这个问题,但是一直没有提供设置超时时间的接口)
7、ExoMedia
可能这个框架并不是十分有名气,只是Github上的一个开源库。它是基于Google的ExoPlayer开发的,不过在播放视频直播上,目前只支持HLS协议。但是在播放器的其他功能方面个人觉得并不弱于Vitamio。
8、VCL
这个说起来就有些来头了,vcl不是一般开发者可以嵌入的,需要一定的C++/C的代码能力,比如VCL For Android就需要去写jni来接入VCL了。听说Vitamio也是VCL的一个变种。
说了这么多,我在目前的应用中到底使用了什么解决方案来嵌入了直播呢?综合了很多因素考虑,直播平台使用了腾讯云,推流工具使用了OBS,让腾讯云同时生成了RTMP拉流地址和HLS拉流地址,iOS客户端使用Vitamio播放RTMP(延迟短),Android客户端使用ExoMedia播放HLS(延迟长)
Android&iOS视频直播之旅的更多相关文章
- 最近这么火的iOS视频直播
快速集成iOS基于RTMP的视频推流 http://www.jianshu.com/p/8ea016b2720e iOS视频直播初窥:高仿<喵播APP> http://www.jiansh ...
- iOS 视频直播
ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...
- iOS视频直播初窥:高仿<喵播APP>
视频直播初窥 视频直播,可以分为 采集,前处理,编码,传输, 服务器处理,解码,渲染 采集: iOS系统因为软硬件种类不多, 硬件适配性比较好, 所以比较简单. 而Android端市面上机型众多, 要 ...
- iOS视频直播
视频直播技术点 视频直播,可以分为 采集,前处理,编码,传输, 服务器处理,解码,渲染 采集: iOS系统因为软硬件种类不多, 硬件适配性比较好, 所以比较简单. 而Android端市面上机型众多, ...
- IOS 视频直播/智能家居(一行行敲代码,从零开始)lesson:1整体架构
本文转载至 http://blog.csdn.net/u014011807/article/details/47144027 前段时间由于工作需要做了一个视频直播/智能家居类的应用.算是对iOS音视频 ...
- iOS视频直播用到的协议
一 .流媒体 1 - 伪流媒体 1.1 扫盲:边下载边播放1.2 伪流媒体:视频不是实时播放的,先把视频放在数据库,再供客户端访问,比如:优酷,爱奇艺等 1.3 特点: 边下边存,文件会保存.遵守了 ...
- iOS 视频直播弹幕的实现
弹幕,并不是一个多么复杂的功能. 1.弹幕的实现性分析 首先,从视觉上明确当前弹幕所具有的功能 从屏幕右侧滑入左侧,直至完全消失 不管是长的弹幕,还是短的弹幕,速度一致(可能有的需求是依据弹幕长度,调 ...
- Android中直播视频技术探究之---视频直播服务端环境搭建(Nginx+RTMP)
一.前言 前面介绍了Android中视频直播中的一个重要类ByteBuffer,不了解的同学可以 点击查看 到这里开始,我们开始动手开发了,因为我们后续肯定是需要直播视频功能,然后把视频推流到服务端, ...
- 视频直播SDK-ios版
IOS视频直播接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1080x720,6 ...
随机推荐
- How To: Perl TCP / UDP Socket Programming using IO::Socket::INET
http://www.thegeekstuff.com/2010/07/perl-tcp-udp-socket-programming/ In this article, let us discuss ...
- 使用VS连接SQLServe时提示未能载入文件或程序集“System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKey
解决方法: 就是去微软主页下载两个Microsoft SQL Server 2012补丁包,SQLSysClrTypes.msi和SharedManagementObjects.msi ...
- android安全:forceStopPackage对android的Alarm的影响
也许一些使用alarmmanager做定时任务的同学遇到过这样的问题:设定alarm后,进入设置-->应用程序管理-->强行停止app后,定时任务就失效了. 简单的讲就是:force st ...
- memached+asp.net 4.0 分布式缓存
由于准备做一个商品站点,希望做一个memached缓存.折腾了一个多星期.本机是存进去取出来为空. 各种办法都试过了,还是不行.最后用同事电脑測试是能够的,然后将DEMO公布到阿里云也是能够的.支持. ...
- poj 2688 状态压缩dp解tsp
题意: 裸的tsp. 分析: 用bfs求出随意两点之间的距离后能够暴搜也能够用next_permutation水,但效率肯定不如状压dp.dp[s][u]表示从0出发訪问过s集合中的点.眼下在点u走过 ...
- 0c-38-ARC快速入门
2.ARC快速使用 int main(){ Student *s = [[Student alloc] init]; return 0; } 只需要写一行代码,编译器会在合适的位置释放学生对象,程序员 ...
- MySQL Order By实现原理分析和Filesort优化
http://blog.csdn.net/hguisu/article/category/796963
- 基于HTML5实现五彩连珠小游戏
今天给大家分享一款基于HTML5实现五彩连珠小游戏.这款游戏的规则:点击彩球移动到期望的位置,每移动一次,画面将随机出现3个新的彩球:当同一颜色的彩球连成5个一行或一列或一斜线时,这5个彩球同时消失, ...
- Linux编程之《看门狗进程》
Intro 当我们编写服务器代码时,为了让自己的服务器在意外崩溃时能够及时的重启,软件看门狗就显示出它的作用了,该看门狗进程是通过fork一个子进程(业务进程),父进程一旦捕获到了子进程的结束信号就重 ...
- LeetCode31 Next Permutation
题目: Implement next permutation, which rearranges numbers into the lexicographically next greater per ...