看到该文章我非常喜欢,为了方便自己查看和参考所以将其复制过来,源文地址:http://www.cnblogs.com/runner42/p/5241407.html

请支持原作者。原作者如看到请原谅复制您的,纯属为了方便查阅。

当前视频直播非常火爆,手机端的视频直播也非常火爆,PGC、UGC的视频直播门槛都降低了很多。

本文介绍一个:IOS 客户端直播的SDK,代码完全开源。

直播时代:让IOS普通开发者一天内做出一个RTMP直播客户端,并且带有美艳直播功能。(文章最下面有github源码地址)

包含一下功能:

1, 提供IOS苹果手机的RTMP推流;

填写RTMP服务地址,直接就可以进行推流。

2,美颜直播

美不美都能装的直播,IOS OPENGL美艳加速,手机完全不发烫。

3,前后摄像头随时切换

4,提供RTMP连接状态的回调

一,首先简单扫盲

当前直播都是用RTMP协议,推流到RTMP服务器。

然后RTMP服务器提供RTMP视频服务;

当然通常RTMP服务器也提供HLS,把视音频流切片成ts流,然后用户可以直接播放xxx.m3u8的流媒体。

二,SDK使用简介

1,初始化

[LiveVideoCoreSDK sharedinstance]:全局独立的SDK实例,你不用管理对象的申请和释放;

初始化RTMP连接和视频参数,非常简单:

[[LiveVideoCoreSDK sharedinstance] LiveInit:RtmpUrl Preview:self.view VideSize:LIVE_VIEDO_SIZE_CIF BitRate:LIVE_BITRATE_500Kbps FrameRate:LIVE_FRAMERATE_20];

参数:

RtmpUrl: rtmp服务器地址参数,如rtmp://192.168.30.191/live/123456

Preview: IOS本地预览显示的UIVIEW对象,现在都喜欢全屏直播模式,这里直接用self.view

VideSize: 视频分辨率。这里提供了几种视频分辨率,CIF(320*640),D1(540*960),720P(720*1280)

BitRate: 视频码率。有500kbps对应CIF,800kbps对应D1, 2Mbps对应720p,怎么配置就看你手机当前的带宽情况了。

FrameRate: 视频帧率。这个决定视频流畅程度,帧率越高越流畅。这里提供:15帧/s,20帧/s,25帧/s,20帧/s

2,连接RTMP视频服务器

[[LiveVideoCoreSDK sharedinstance] connect];

调用这个接口后,开始打开iphone本地手机预览,并且开始连接RTMP服务器。

如果网络没有问题,RTMP服务器没有问题,直播就开始了,简单吧!

3,设置滤镜:提供美艳效果

- (void)setFilter:(LIVE_FILTER_TYPE) type;

当前提供了美白效果,设置一个LIVE_FILTER_BEAUTY这个参数,看看你有多美白。

4,设置前后摄像头

- (void)setCameraFront:(Boolean)bCameraFrontFlag;

前后摄像头随时动态切换,想怎么拍就怎么拍。

5,设置RTMP连接状态回调

[LiveVideoCoreSDK sharedinstance].delete = self;

在你的viewcontroller中实现协议:LIVEVCSessionDelegate,如下,这样你可以随时知道RTMP连接的状态了。

//rtmp status delegate:

- (void) LiveConnectionStatusChanged: (LIVE_VCSessionState) sessionState{

dispatch_async(dispatch_get_main_queue(), ^{

switch (sessionState) {

case LIVE_VCSessionStatePreviewStarted:

_RtmpStatusLabel.text = @"RTMP状态: 预览未连接";

break;

case LIVE_VCSessionStateStarting:

_RtmpStatusLabel.text = @"RTMP状态: 连接中...";

break;

case LIVE_VCSessionStateStarted:

_RtmpStatusLabel.text = @"RTMP状态: 已连接";

break;

case LIVE_VCSessionStateEnded:

_RtmpStatusLabel.text = @"RTMP状态: 未连接";

break;

case LIVE_VCSessionStateError:

_RtmpStatusLabel.text = @"RTMP状态: 错误";

break;

default:

break;

}

});

}

6,直播结束,断开rtmp连接

[[LiveVideoCoreSDK sharedinstance] disconnect];简单吧,不解释了。

GitHub地址: https://github.com/runner365/LiveVideoCoreSDK

直播时代--IOS直播客户端SDK,美艳直播【开源】的更多相关文章

  1. 直播时代--IOS直播客户端SDK,美颜直播【开源】

    当前视频直播非常火爆,手机端的视频直播也非常火爆,PGC.UGC的视频直播门槛都降低了很多. 本文介绍一个:IOS 客户端直播的SDK,代码完全开源. 直播时代:让IOS普通开发者一天内做出一个RTM ...

  2. 直播推流端弱网优化策略 | 直播 SDK 性能优化实践

    弱网优化的场景 网络直播行业经过一年多的快速发展,衍生出了各种各样的玩法.最早的网络直播是主播坐在 PC 前,安装好专业的直播设备(如摄像头和麦克风),然后才能开始直播.后来随着手机性能的提升和直播技 ...

  3. 大直播时代,P2P才是降低成本的必杀技

    在流媒体传输分发领域,CDN和P2P一直是经常被拿来进行对比和讨论的一大热点,虽然不少大型视频企业目前同时使用着CDN和P2P两套分发机制,但相对于CDN,很多人对于P2P技术知之甚少.整体来说,P2 ...

  4. 转: 如何选CDN:互联网大直播时代的CDN选择指南

    from:  http://www.chnvideo.com/blog-classic-cdn.html SRS 编码器   如何选CDN:互联网大直播时代的CDN选择指南 CDN是一个服务型的公司, ...

  5. 如何选CDN:互联网大直播时代的CDN选择指南

    转: 如何选CDN:互联网大直播时代的CDN选择指南 from:  http://www.chnvideo.com/blog-classic-cdn.html SRS 编码器   如何选CDN:互联网 ...

  6. iOS直播集成和问题总结(阿里云直播)

    https://www.jianshu.com/p/714ce954e628 最近接手公司的直播项目,对以前遗留的问题做处理和优化, 于是顺便看了下阿里云直播的文档,在下面写下对直播的理解和遇到的问题 ...

  7. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  8. 基于anyrtc的sdk实现直播连麦互动

    基于anyrtc的sdk实现直播连麦互动 前言 1.由于粘贴了较大的代码,造成内容比较长,可能会花费您较长的时间. 2.项目里面没有做权限判断,所以如果发现有页面发生崩溃可能是权限没有打开,请打开权限 ...

  9. 直播 背景 技术体系 乐视云直播Demo

    背景 最近工作需要做一款直播APP,恩是的,从RTMP协议的实现开始到处理服务器高并发.负载均衡.客户端播放器实现等等等..... 估计全部写完我也到而立之年了吧...... BOSS们估计也是发现了 ...

随机推荐

  1. 青蛙跳台阶问题——剑指offer

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶,求该青蛙跳上一个n级台阶总共有多少中跳法. http://www.nowcoder.com/books/coding-interviews?pa ...

  2. JavaSE_ IO流 总目录(19~22)

    JavaSE学习总结第19天_IO流119.01 集合的特点和数据结构总结19.02 如何选择使用哪种集合19.03 集合常见功能和遍历方式总结19.04 异常的概述和分类19.05 JVM默认处理异 ...

  3. 怎么给没链接的flash加超链接

    最近开始准备设计一个广告条,本想用阿里妈妈的的banner marker来设计,却遗憾的发现,banner marker已经实行收费模式了. 我不得不启用另一款在线banner生成工具,百度旗下的&q ...

  4. oracle命令大全

    内容包括三大项:    1.oracle基本操作语句 2.SQLServer基本操作语句 3.各种数据库连接方法 ******************************************* ...

  5. php命名空间及和autoload结合使用问题。

    在讨论如何使用命名空间之前,必须了解 PHP 是如何知道要使用哪一个命名空间中的元素的.可以将 PHP 命名空间与文件系统作一个简单的类比.在文件系统中访问一个文件有三种方式: 相对文件名形式如foo ...

  6. 动态链接库dll,静态链接库lib, 导入库lib

    转载地址:http://www.cnblogs.com/chio/archive/2008/08/05/1261296.html 目前以lib后缀的库有两种,一种为静态链接库(Static Libar ...

  7. JAVA GUI学习 - JSplitPane分屏组件学习

    public class JSplitPaneKnow extends JFrame { JSplitPane jSplitPane; JPanel jPanelRed; JPanel jPanelB ...

  8. Google Play和基于Feature的过滤

    田海立@CSDN 翻译自Google Play and Feature-Based Filtering GooglePlay会过滤出那些对用户可见的应用程序,因此用户只能看到和下载那些与他们的设备兼容 ...

  9. http协议与http代理

    TCP/IP协议族 TCP/IP(Transmission Control Protocol/InternetProtocol.传输控制协议/网际协议)是用于计算机通信的一个协议族. TCP/IP协议 ...

  10. 《数字图像处理原理与实践(MATLAB版)》一书之代码Part6

    本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part6,辑录该书第281至第374页之代码,供有须要读者下载研究使用.代码运行结果请參见原书配图,建议下载代码前阅读下 ...