现在的移动互联网时代,大家的网速真是越来越快,高带宽的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视频直播之旅的更多相关文章

  1. 最近这么火的iOS视频直播

    快速集成iOS基于RTMP的视频推流 http://www.jianshu.com/p/8ea016b2720e iOS视频直播初窥:高仿<喵播APP> http://www.jiansh ...

  2. iOS 视频直播

    ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...

  3. iOS视频直播初窥:高仿<喵播APP>

    视频直播初窥 视频直播,可以分为 采集,前处理,编码,传输, 服务器处理,解码,渲染 采集: iOS系统因为软硬件种类不多, 硬件适配性比较好, 所以比较简单. 而Android端市面上机型众多, 要 ...

  4. iOS视频直播

    视频直播技术点 视频直播,可以分为 采集,前处理,编码,传输, 服务器处理,解码,渲染 采集: iOS系统因为软硬件种类不多, 硬件适配性比较好, 所以比较简单. 而Android端市面上机型众多, ...

  5. IOS 视频直播/智能家居(一行行敲代码,从零开始)lesson:1整体架构

    本文转载至 http://blog.csdn.net/u014011807/article/details/47144027 前段时间由于工作需要做了一个视频直播/智能家居类的应用.算是对iOS音视频 ...

  6. iOS视频直播用到的协议

    一 .流媒体 1 - 伪流媒体 1.1 扫盲:边下载边播放1.2 伪流媒体:视频不是实时播放的,先把视频放在数据库,再供客户端访问,比如:优酷,爱奇艺等 1.3 特点: 边下边存,文件会保存.遵守了 ...

  7. iOS 视频直播弹幕的实现

    弹幕,并不是一个多么复杂的功能. 1.弹幕的实现性分析 首先,从视觉上明确当前弹幕所具有的功能 从屏幕右侧滑入左侧,直至完全消失 不管是长的弹幕,还是短的弹幕,速度一致(可能有的需求是依据弹幕长度,调 ...

  8. Android中直播视频技术探究之---视频直播服务端环境搭建(Nginx+RTMP)

    一.前言 前面介绍了Android中视频直播中的一个重要类ByteBuffer,不了解的同学可以 点击查看 到这里开始,我们开始动手开发了,因为我们后续肯定是需要直播视频功能,然后把视频推流到服务端, ...

  9. 视频直播SDK-ios版

    IOS视频直播接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1080x720,6 ...

随机推荐

  1. SCCM 2007 R2部署、操作详解系列之概念

    站点类型 在安装站点时,您决定它将是主站点还是辅助站点.然后,在安装其他站点时,您可以选择将其安排到层次结构关系中,以便父站点管理子站点,中央站点收集所有站点信息,从而进行集中式管理.也可以根据业务和 ...

  2. jackson 解析json问题

    1.json串中有key为A,但指定转换的mybean中未定义属性A,会抛异常.处理:mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, fals ...

  3. Swift学习笔记十一

    类与结构体 Swift中,并不要求把自定义类或结构的接口和实现写在不同的文件中.你在一个文件中定义类或结构体,那么这个类或结构体的外部接口就自动可以在其他代码中使用了. 类和结构有很多相似和区别,相同 ...

  4. hdu 5268 ZYB loves Score 水题

    ZYB loves Score Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

  5. 小票打印机指令集封装(支持EPSON指令)

    最近写了一些关于小票打印机的程序,不难,但是记录下来,作为足迹吧. 现在市场上的小票机基本都支持EPSON指令.指令集文档 对指令集进行了自己的封装,方便以后调用: package aheiziUti ...

  6. Android定时器,推荐ScheduledThreadPoolExecutor

    Android定时器,推荐ScheduledThreadPoolExecutor 官方网址:http://developer.android.com/reference/java/util/Timer ...

  7. NServiceBus

    官方网站:http://docs.particular.net/nservicebus/      NServiceBus 是一个用于构建企业级 .NET系统的开源通讯框架.它在消息发布/订阅支持.工 ...

  8. servlet 和filter 抛出404等异常

    1. servlet抛出错误代码异常,如404 public void doGet(HttpServletRequest request, HttpServletResponse response) ...

  9. C++类设计2(Class with pointer members)

    二 Class with pointer members(Class String) 1. 测试代码(使用效果) int main() { String s1(), String s2("h ...

  10. nginx的监控配置

    最近在弄性能,在性能过程中需要监控nginx的一些配置,这里简单的搭建了环境 //下载nginx  根据自己的版本 wget http://nginx.org/download/nginx-1.6.0 ...