美狐讲堂:视频用直播用SDK盘点
Posted 美狐美颜sdk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了美狐讲堂:视频用直播用SDK盘点相关的知识,希望对你有一定的参考价值。
1、推流:阿里云直播、七牛云等
阿里云直播是由阿里集团推出的SDK,免费使用,但美颜效果一直都有问题,如果不满意的话,解决策略是接入另一个三方的美颜SDK。
七牛云效果还行,能满足市面上的大部分功能,就连麦方面的话,七牛云主体是客户端合流,对网络、设备的要求较高。
总的来说,市面上推流平台各有各的特点:腾讯云直播、七牛云、金山云更偏向于娱乐性的直播,网易云信是基于他的IM系统,而阿里云偏向服务器CDN,声网更擅长多对多音视频聊天,即构科技连麦技术最强大。
1、视频播放器:IJKPlayer、AliPlayer
IJKPlayer是由B站推出的SDK,基本完全兼容所有格式下的视频文件,各种流状态的监控都提供了不同的定义;AliPlayer相较IJKPlayer而言,更为轻量,但是播放状态之类的,不是很好监控。
2、IM服务:云信、环信等
直播APP免不了需要即时通讯,融云、云信、环信等都提供了IM服务。
3、其他服务:openinstall
openinstall SDK可以获取安装参数,帮助直播间建立上下级关系,明确用户邀请来源,还能在用户打开APP后自动跳转对应直播间。
直播:(一对多,RTMP/HLS/HTTP-FLV,CDN)直播是一种非常典型的流媒体系统,通常会分为推流端(Pusher)、拉流端(或者叫播放端,Player)以及直播流媒体中心(直播源站),通常会使用CDN进行直播的分发,因此大部分情况下使用的是通用标准的协议,如RTMP,而经过CDN分发后,播放时一般可以选择RTMP、HTTP-FLV或HLS(H5支持)等方式。直播的特点是只有一个推流端,以及多个的观看端。
实时音视频:(双人/多人通话,UDP私有协议,低延时)实时音视频(Real-Time Communication, RTC)主要应用场景是音视频通话,技术关注点是低延时通信,因而使用基于UDP的私有协议,其延迟可低于100ms,适用于双人通话或是多人群组群话,典型的场景就是QQ电话、微信电话。 腾讯云实时音视频(TRTC)覆盖各平台,除了ios/android/Windows之后,还支持小程序以及 WebRTC 互通,并且支持通过云端混流的方式将画面旁路直播出去。当业务对延迟敏感,通话场景要求比较高,或是需要小程序或者 H5 场景下的双人或多人音视频通话可以选择实时音视频 TRTC。
互动直播:(连麦,二对多/多对多,私有协议+标准协议,DC/OC+CDN)
互动直播是在实时音视频的基础上,将实时音视频某个房间中的画面经云端混流后,通过旁路直播的方式直播出来。因此,互动直播主播与连麦者之间延迟与实时音视频一致,而主播/连麦者与普通观众之间的延时则与普通直播相同。
旁路直播(关键词:云端混流,转推,CDN)将主/副播实时音视频通话时的整个房间的画面复制一份到云端进行云端混流,并将混流后的画面推流给腾讯云直播系统的工作方式。 因为混流后的视频数据流和主/副播通话房间实际上并不是同一路流,而是在另外平行的一路,因而称为旁路,即不在主路。云端录制时,录制的流也是通过旁路的方式从流媒体中心引出,存到COS中。
Ios-视频直播-知识点汇总-持续更新
最近公司要求做视频直播,之前工作几年,视频一直都是弱项,没怎么接触过,现在正好有机会深入的去了解一下,记录一些遇到的坑和需要用到的东西.
~公司要求,用HLS协议,要求可以播放m3u8格式的,当时一听一脸懵逼,什么鬼
~查询的过程中,参考了很多同行的博客,有很多知识点都很分散,也有很多Demo,第三方SDK,下载不能用等等,再此汇总一下,方便大家参考
知识点:
下面的知识点还有术语,在查询文档的过程中,可能会经常遇到。
M3U8:可以做多码率的适配,根据网络带宽,客户端会选择一个适合自己码率的文件进行播放,保证视频流的流畅。
1.传输协议:
HLS:HTTP Live Streaming是一个由苹果公司提出的基于HTTP的流媒体 网络传输协议。服务器要求低,因为涉及到切片,延时会比较大,需要了解TS流
RTSP:摄像头功能
RTMP:看下它与流媒体服务器交互的过程,RTMP协议的默认端口是1935,采用TCP协议。并且需要了解FLV的封装格式
RTP与RTCP等
2.视频推流与视频拉流工作过程解析
视频推流端:就是将采集到的音频,视频数据通过流媒体协议发送到流媒体服务器
2.1 采集音视频数据
iOS平台上采集音视频数据,需要使用AVFoundation.Framework框架,从captureSession会话的回调中获取音频,视频数据
2.2 硬编码,软编码音视频数据
软编码就是利用CPU资源来压缩音视频数据,硬编码与之相反。
软编码的话,现在广泛采用FFmpeg库结合编码库来实现,FFmpeg+X624来编码视频数据YUV/RGB输出H264数据,
FFmpeg+fdk_aac来编码音频数据PCM输出AAC数据。
2.3 根据所选流媒体协议封包音视频数据将音频,视频打包成packet
2.4 与服务器交互发送封包数据
根据所选流媒体协议,发送相应指令连接服务器,连接服务器成功后,就可以发送packet数据了
3.拉流
拉流,就是从流媒体服务器获取音频,视频数据
3.1解析协议
播放器端根据URL解析所用的流媒体协议(RTMP,HLS)
3.2解封装
解封装,就是demux的过程,从容器格式(FLV,TS)中,分离出音视频数据
3.3解码
解码,就是把获取到的数据解压缩,恢复成原始数据。解码就是将H264变成YUV,AAC变成PCM。
解码可以使用软解码,硬解码。
软解码就是利用CPU资源去解压缩数据,采用的方式是FFmpeg解码。
硬解码,对于iOS平台来说,可以使用VideoToolbox.Framework(该框架只能在iOS 8.0及以上系统使用)
硬解码视频数据
3.4 渲染数据
采用OpenGL渲染YUV数据,呈现视频画面。将PCM送入设备的硬件资源播放,产生声音。
iOS播放流式音频,使用Audio Queue 的方式,即,利用AudioToolbox.Framework 框架
上面就是一些简单的知识点,汇总了一些,现在给大家推荐一些,DEMO和SDK,供大家参考
先说第三方SDK:
1.融云,http://www.rongcloud.cn/live
下载下来好用,调用也很简单,集成很快,就是有点贵,要收费的哦,界面类似于,市面上大部分直播app,竖屏,有聊天室,可以送礼物等,不过不符合公司需求,pass
2.暴风云直播, http://www.baofengcloud.com/apisdk/sdk/live/iossdk.html
不好用,大家可以去试试
3.网易云直播,http://dev.netease.im/docs?doc=devfunc_LiveStreaming
好像是收费的,价格还不便宜,一般公司可能也不会用,功能很强大,不符合需求,pass
4.腾讯直播,https://www.qcloud.com/solution/video.html
同样收费,简单的看了一下,功能很强大,不过还是不符合需求
剩下的SDK还有非常多,就不依依介绍了,更多资料复制下面的网站查看,有大神总结的很到位了
http://www.ccidnet.com/2016/0606/10143020.shtml
Demo:
虽然市面上的SDK很多,不过还是没有特别符合需求的,所以就只能参考大神写的Demo了
下面都是每个demo,都是经测试可以用的,不过注意,不是直播,大家可以参考参考原理,找自己需要的东西,替换url进行测试
1.http://code.cocoachina.com/view/129748
2.http://code.cocoachina.com/view/128253
两个都是基于AVplayer写的
3.http://code.cocoachina.com/view/128343
基于MediaPlayer写的
还有很多就不举例,以上这3个demo,都是很轻量级的,在她们的基础上稍作修改就可以用了.
好坏就不做评价了,大家自己体会
另外说一句,如果要做功能很复杂的直播,最好用SDK
常用直播源:
凤凰中文,http://zv.3gv.ifeng.com/zhongwen800k.m3u8
香港卫视,http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8
如果还想要其他的网站:直播源大全
如果想了解更多的m3u8的资料:
http://blog.csdn.net/langeldep/article/details/8603045
iOS直播类App开发流程分解:
http://blog.sina.com.cn/s/blog_aa7beba30102w8ws.html
以上是关于美狐讲堂:视频用直播用SDK盘点的主要内容,如果未能解决你的问题,请参考以下文章