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 ...
随机推荐
- 【好文翻译】测试必看:使用Spire.XLS来生成自动化报表!
Download C# project - 7.1 KB 介绍 在我的编程博客中,我经常会比较不同算法或原理的性能特征.我常常会把性能日志(如花费时间)输出到控制台或者文本文件,然后复制到电子表格中 ...
- wget 命令用法详解
wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能和特点:(1)支持断点下传功能:这一点,也是网络蚂蚁和Fl ...
- Swift用UIBezierPath来画圆角矩形、自定义多路径图形
最好的特点就是可以自定义路径,设置圆角和描边都很方便,以下为代码和效果,均在playground中实现 1.首先实现一个圆角矩形,并对此路径描边,为其绘制一个轮廓. 1 2 3 4 5 6 7 8 9 ...
- 分布式存储系统sheepdog
Sheepdog,是由NTT的3名日本研究员开发的开源项目,主要用来为虚拟机提供块设备. 其架构例如以下: 以下,我们将从架构.模块等几个方面来介绍下: 一.架构图 如上图: 採用无中心节点的全对称架 ...
- 开机就提示“请安装TCP/IP协议,error=10106”的解决的方法
一.问题描写叙述: 今天开机时提示"请安装TCP/IP协议,error=10106",现象是popo,qq等登录不了,IE浏览器等连不了网,使用ping命令ping其它机器和路由器 ...
- 0c-37-ARC
.什么是ARC? Automatic Reference Counting,自动引用计数,即ARC,可以说是WWDC2011和iOS5所引入的最大的变革和最激动人心的变化.ARC是新的LLVM .0编 ...
- Jquery实现文本框获取焦点清空内容,失去焦点重新获得内容的公共函数
最近在做一个同城交友网站你给我吧(www.niyuewo.com)时写的一个函数与大家分享: //清除input中的内容 $(document).ready(function(){ $("i ...
- nopCommerce 数据缓存
为了提高一个系统或网站的性能和IO吞吐量,我们一般都会采用缓存技术.当然NopCommerce也不例外,本文我们就来给大家分析一下nop中Cache缓存相关类设计.核心源码及实现原理. 一.Nop.C ...
- git-ssh 配置和使用
1.设置Git的user name和email:(如果是第一次的话) $ git config --global user.name "humingx" $ git config ...
- 关于测试Windows电脑端口的命令 —— telnet用法
telnet服务在win7默认是打开的,如果没有打开要在电脑中打开. 命令格式:telnet ip port 例如:telnet 127.0.0.1 80 或者 telnet www.XXX.com ...