随着网络技术的迅猛发展,网络直播已不再遥不可及。各行各业以直播为基础的应用场景更是如雨后春笋,遍地开花,相关数据也显示,无论是国内还是国外,市场需求层出不穷,不仅包含视频门户、视频社交、在线教育、娱乐直播,企业视频协作、新闻媒体、金融、监控以及医疗等各行业均存在巨大的视频需求。由此,也催生出很多帮助这些行业实现直播功能的第三方云服务平台,接入成本不到开发者自己开发的十分之一,相比自主研发,外包直播模块成为大多数开发者的首选。
如图所示,从2015年下半年开始,各大巨头纷纷发力视频云服务,推出直播功能抢滩市场,市场竞争渐进入焦灼状态。但不管选择接入哪家的直播SDK,开发者在接入过程中总会遇到各种各样的问题。下面,小编就APP接入过程中最受开发者关心的问题进行一个详细的梳理。
如何选择靠谱的直播产品?
直播产品架构
首先看口碑。看知乎或开发者论坛上是否有该服务商的负面评价,这些评价有些是真实的,但有些可能是竞争对手恶意抹黑,这一点需要辨别清楚。然后是负面评价内容是否是自己最为关心的,比如服务品质差,技术支持不到位的视频云服务平台,对于小型的开发实力一般的创业公司而言,就不太适合,一旦接入,开发过程中遇到的技术问题因为得不到及时和有效的响应,经常会让程序员抓狂。其次看功能。功能是否能满足需求也是需要关注的核心问题。最后,要看产品性能。这个可以从视频云服务商提供的demo判断出来,试用之后,性能稳不稳定通常心里就有数了。
直播功能有哪些应用场景?
如图所示,直播功能的场景非常多样化,小编总结了一下,直播场景细分为以下几个方面:
1、在线教育行业:网校、慕课、K12、在线家教等
2、在线娱乐行业:美女秀场、游戏直播、演唱会直播KTV直播、婚礼直播、活动直播、体育赛事直播、装修直播、吃饭直播等
3、社交:明星社交、视频社交等
4、视频门户:视频直播等
5、企业协作:企业例会直播、产品发布会直播等
6、在线金融:视频理财咨询、在线签约过程录制、股评直播、大宗交易平台直播等
7、安防监控:家庭监控、幼儿园监控、早教中心监控、旅游景区监控等
8、远程医疗:视频问诊、专家会诊等
9、新闻媒体:现场手机直播、短新闻、庭审直播等
直播功能接入流程及有哪些常见问题?
上图是网易云信直播功能的接入流程,一般来说,开发者在接入直播功能的时候,接入流程大概如下:
a、注册视频云账号
b、创建直播频道
c、下载SDK和API文档
d、开发直播推流程序
看起来简单的接入流程,开发者在实际操作过程中还是会遇到各种各样的问题。对于这些问题,小编总结了一下,主要有以下四个方面:
1、工程上的问题。比如接入Android端直播SDK,首先要导入SDK包到eclipse或AndroidStudio工程。将开发包libs目录下的so库文件放置于工程名/libs/armabi或者/lib/armibi-v7a目录下,同时将LiveStreamingSDK.jar加入工程。
同时需要在AndroidManifest.xml中添加系统权限。如下
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS">
作用:允许挂载和反挂载文件系统 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
作用:允许程序创建显示在其他程序之上,并且类型为TYPE_SYSTEM_ALERT的窗体<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
作用:允许程序向外部存储设备写数据 <uses-permission android:name="android.permission.INTERNET"/>
作用:允许程序打开网络套接字 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
作用:允许程序获取网络相关信息 <uses-permission android:name="android.permission.RECORD_AUDIO"/>
作用:允许程序写音频数据 <uses-permission android:name="android.permission.WAKE_LOCK"/>
作用:允许程序使用PowerManager WakeLocks以防止处理器休眠或者屏幕锁屏<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
作用:允许程序获取Wifi网络状态信息 <uses-permission android:name="android.permission.CAMERA"/>
作用:允许程序使用设备的camera <uses-permission android:name="android.permission.SET_DEBUG_APP"/>
作用:配置一个程序用于调试 <uses-feature android:name="android.hardware.camera "/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
作用:声明程序使用camera和自动对焦功能 <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
作用:声明程序使用OpenGL ES 2.0最后在Java代码中导入SDK类,在直播Activity中导入如下类: import com.netease.livestreamingFilter.view.*;
import com.netease.LSMediaCapture.*;
import com.netease.LSMediaCapture.lsMediaCapture.*;
网易云信工程师建议:对于Andriod,iOS,Windows平台的接入的详细使用说明,可以参考网易云信直播SDK接入文档。
2、功能性上的问题。开发者在调用第三方SDK接口的时候,由于绝大多数的程序员不会认真去读对方的API文档,经常跟着感觉或经验去做调用,调用过程中经常会出现这样或那样的问题。
例如,利用SDK开发一个直播推流应用程序,首先需要的设置相关的直播参数集,包括音频的码率,声道,采样率,位宽,编码格式,视频的码率,帧率,分辨率,编码格式,以及直播发送协议。详细参数如下:
//输出封装格式
mLSLiveStreamingParaCtx.eOutFormatType.outputFormatType= RTMP;//直播封装格式
//摄像头参数配置
mLSLiveStreamingParaCtx.sLSVideoParaCtx.cameraPosition.cameraPosition= CAMERA_POSITION_BACK;//后置摄像头
mLSLiveStreamingParaCtx.sLSVideoParaCtx.interfaceOrientation.interfaceOrientation= CAMERA_ORIENTATION_PORTRAIT;//竖屏
//音频编码参数配置
mLSLiveStreamingParaCtx.sLSAudioParaCtx.samplerate= 44100;//音频采样率
mLSLiveStreamingParaCtx.sLSAudioParaCtx.bitrate= 64000;//音频编码码率
mLSLiveStreamingParaCtx.sLSAudioParaCtx.frameSize= 2048;//音频一帧数据量
mLSLiveStreamingParaCtx.sLSAudioParaCtx.audioEncoding= AudioFormat.ENCODING_PCM_16BIT;//音频数据位宽
mLSLiveStreamingParaCtx.sLSAudioParaCtx.channelConfig= AudioFormat.CHANNEL_IN_MONO;
//音频采样声道数
mLSLiveStreamingParaCtx.sLSAudioParaCtx.codec.audioCODECType= LS_AUDIO_CODEC_AAC;
//音频编码格式
//视频编码参数配置
mLSLiveStreamingParaCtx.sLSVideoParaCtx.fps= 20;//视频帧率
mLSLiveStreamingParaCtx.sLSVideoParaCtx.bitrate= 600000;//视频码率
mLSLiveStreamingParaCtx.sLSVideoParaCtx.codec.videoCODECType= LS_VIDEO_CODEC_AVC;
//视频编码格式
mLSLiveStreamingParaCtx.sLSVideoParaCtx.width= 640;//视频分辨率(宽)
mLSLiveStreamingParaCtx.sLSVideoParaCtx.height= 480;//视频分辨率(高)
网易云信工程师建议:对于SDK提供的具体功能,以及相关的接口参数的设置和调用规则,开发者接入前需要好好阅读开发文档,详情可以参考网易云信直播API文档。
3、个性化需求的问题。上述两类问题都被解决后,开发者在整体产品体验上,还会有一些个性化的需求,比如后台切换、音视频流的动态切换、加滤镜或者混音等。
网易云信工程师建议:这就需要前期了解清楚对方的功能点,是否提供个性化需求的接口。
4、整套系统跑起来之后的稳定性问题。有些不稳定情况是自身的网络环境不稳定引起的,如果对方的直播产品能够很好的检测到网络抖动,拥有码流自适应的功能,一定程度上就能避免这个问题。另外,也有一些不稳定情况是对方产品稳定性差引起的。
网易云信工程师建议:这就需要开发者去关注下对方的关键性能指标,比如延迟、卡顿及安全性等。
总结:开发者在选用市面上云服务商的直播产品时,功能是否满足需求和服务响应是否及时应该是开发者最应该考量的两个方面,看似简单的接入流程,有时候会衍生出各种各样的问题,对方的技术支持和运维服务非常重要。有些资金不充足的开发者前期会优先选用免费的云服务,但这也会出现一定的隐患,一旦产品体验差,更换云服务商的代价会更大。一般而言,知名大公司的技术实力更强,服务品质也站得住脚。
http://blog.csdn.net/itluochen/article/details/52235569