随着网络技术的迅猛发展,网络直播已不再遥不可及。各行各业以直播为基础的应用场景更是如雨后春笋,遍地开花,相关数据也显示,无论是国内还是国外,市场需求层出不穷,不仅包含视频门户、视频社交、在线教育、娱乐直播,企业视频协作、新闻媒体、金融、监控以及医疗等各行业均存在巨大的视频需求。由此,也催生出很多帮助这些行业实现直播功能的第三方云服务平台,接入成本不到开发者自己开发的十分之一,相比自主研发,外包直播模块成为大多数开发者的首选。

如图所示,从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、整套系统跑起来之后的稳定性问题。有些不稳定情况是自身的网络环境不稳定引起的,如果对方的直播产品能够很好的检测到网络抖动,拥有码流自适应的功能,一定程度上就能避免这个问题。另外,也有一些不稳定情况是对方产品稳定性差引起的。

网易云信工程师建议:这就需要开发者去关注下对方的关键性能指标,比如延迟、卡顿及安全性等。

总结:开发者在选用市面上云服务商的直播产品时,功能是否满足需求和服务响应是否及时应该是开发者最应该考量的两个方面,看似简单的接入流程,有时候会衍生出各种各样的问题,对方的技术支持和运维服务非常重要。有些资金不充足的开发者前期会优先选用免费的云服务,但这也会出现一定的隐患,一旦产品体验差,更换云服务商的代价会更大。一般而言,知名大公司的技术实力更强,服务品质也站得住脚。

随着网络技术的迅猛发展,网络直播已不再遥不可及。各行各业以直播为基础的应用场景更是如雨后春笋,遍地开花,相关数据也显示,无论是国内还是国外,市场需求层出不穷,不仅包含视频门户、视频社交、在线教育、娱乐直播,企业视频协作、新闻媒体、金融、监控以及医疗等各行业均存在巨大的视频需求。由此,也催生出很多帮助这些行业实现直播功能的第三方云服务平台,接入成本不到开发者自己开发的十分之一,相比自主研发,外包直播模块成为大多数开发者的首选。

如图所示,从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、整套系统跑起来之后的稳定性问题。有些不稳定情况是自身的网络环境不稳定引起的,如果对方的直播产品能够很好的检测到网络抖动,拥有码流自适应的功能,一定程度上就能避免这个问题。另外,也有一些不稳定情况是对方产品稳定性差引起的。

网易云信工程师建议:这就需要开发者去关注下对方的关键性能指标,比如延迟、卡顿及安全性等。

总结:开发者在选用市面上云服务商的直播产品时,功能是否满足需求和服务响应是否及时应该是开发者最应该考量的两个方面,看似简单的接入流程,有时候会衍生出各种各样的问题,对方的技术支持和运维服务非常重要。有些资金不充足的开发者前期会优先选用免费的云服务,但这也会出现一定的隐患,一旦产品体验差,更换云服务商的代价会更大。一般而言,知名大公司的技术实力更强,服务品质也站得住脚。

Android开发之APP直播简介相关推荐

  1. Android开发之APP打开小程序后小程序无法返回APP,无法打开APP,launchApp无法返回app的原因

    Android打开小程序可以看我上篇文章介绍:Android打开小程序 我这边已经成功打开小程序了参数也传递过去了,现在就是无论如何点击返回APP都没有反应,也没用走微信页面WXEntryActivi ...

  2. Android开发之APP唤醒小程序,打开小程序,调起小程序以及传参数的实现方法(附加源码)

    老套路咱们先看效果图: 可以先看下官方文档介绍:微信官方文档APP打开小程序链接 我这边打开了,上面奔溃是因为模拟器不兼容的原因: 主要讲解下打开小程序核心代码: // 填应用AppIdString ...

  3. Android开发之App拍照系统相册展示

    需求:客户提出一个需求,App拍照的照片需要直接在系统相册中可以查看得到. 解决方案: 第一次尝试:刚开始想到的是网上这三种方式:http://blog.csdn.net/qq_34157407/ar ...

  4. android 统计app使用时间,android开发之app在线时长统计sdk开发

    引言: 很多app的在线时长统计都是通过在activity的生命周期中埋点来完成的.我这里既然是封装成sdk,当然就不能这样来了.封装sdk的规则,我想大家都清楚,入参尽量少,回调尽量全,权限尽量不要 ...

  5. Android开发之App支付功能实现及踩坑

    支付宝支付实现 1.正规支付实现 前提条件: 1. 企业或个体工商户可申请,且账号通过支付宝实名认证审核 2. 需提供真实有效的营业执照,且支付宝账户名称需与营业执照主体一致: 3. 提供APP名称或 ...

  6. android 控制app声音,Android底层开发之APP音量单独控制

    Android底层开发之APP音量单独控制 目前Android的音乐播放软件都的音量控制都是随着系统的总Master音量变化的.想要实现和windows中一样,每个APP的媒体音量可以单独控制. 控制 ...

  7. android之json解析优化,Android开发之json解析

    目前正在尝试着写app,发现看懂代码和能写出来差距很大,最关键的是java基础比较的差,因为只会python,java基础只学习了一个礼拜就过了.感觉java写出来的代码不如python简单明了. 上 ...

  8. android注册弹窗,Android开发之PopupWindow创建弹窗、对话框的方法详解

    本文实例讲述了Android开发之PopupWindow创建弹窗.对话框的方法.分享给大家供大家参考,具体如下: 简介: PopupWindow 可创建类似对话框风格的窗口 效果: 使用方法: 使用P ...

  9. Android开发之2048安卓版

    之前是在eclipse上写的,后面换成了android sudio. 2048游戏的UI整体可以采用线性布局,即LinearLayout,其中嵌套一个线性布局和一个GridLayout,内嵌的线性布局 ...

最新文章

  1. [.net 面向对象编程基础] (18) 泛型
  2. SQL Server中使用正则表达式
  3. excel修改列名_听说你还在手动合并Excel,看看这个吧!?
  4. 操作系统实验报告16:CPU 调度
  5. 深入浅出学Hive:Hive内建操作符与函数开发
  6. 关于Matlab编程的思考(待续)
  7. MySQL For RedHat Linux(源码安装,附安装包)
  8. graphql tools_声明式GraphQL:编写更少的代码,并使用graphql-tools完成更多工作
  9. [vc]如何对radio按钮分组
  10. 分布式系统:SrpingBoot整合Zookeeper和Dubbo的版本匹配问题
  11. 信息学奥赛一本通(1034:计算三角形面积)
  12. 259 [LeetCode] 3Sum Smaller 三数之和较小值
  13. 深度学习数学基础一--最小二乘法
  14. css样式,层叠顺序属性z-index
  15. linux虚拟机scsi类型,linux虚拟机的scsi设备id与盘符不一致问题的解决
  16. XAMARIN运行IPHONE模拟器
  17. Android 布局优化方案
  18. TI DSP 28335 eCAP 测量脉冲占空比
  19. python crc16-ccitt
  20. kaggle竞赛 - Home Credit Default Risk金牌心得

热门文章

  1. JavaMail 访问Hotmail
  2. 7月02日13点,北京,「读书会」干货型毕业典礼
  3. 每秒100W请求,携程如何支撑十一假期,抢票系统的?
  4. oracle12官方下载,Oracle 12c下载64位|Oracle Database 12c下载 官方版_最火软件站
  5. 51nod1284 2 3 5 7的倍数
  6. 卷积神经网络模型部署到移动设备
  7. 2021年北京各区高新技术企业认定时间安排,及常见问题解答
  8. Jsoup解析html
  9. 彩色稻高食用价值 国稻种芯-何登骥:功能农业诠释农业大健康
  10. 用Inkspace制作一个简易LOGO的过程