iOS直播-基于RTMP的视频推送
iOS直播-基于RTMP的视频推送
所谓的视频推送就是把摄像头和麦克风捕获到视频和音频推送到直播服务器上.我们这里使用推送协议是RTMP协议. 扩展:腾讯直播平台,阿里直播平台,百度直播平台提供均为RTMP的推流和HLS/RTMP等拉流.
我们使用GDLiveStreaming来实现iOS的端的视频推送
GDLiveStreaming简介
GDLiveStreaming是对开源框架VideoCore
简单封装.提供视频录制,推送与存储. 你可以下载GDLiveStreaming源码来学习和研究. 我们这里讲解如何通过GDLiveStreaming
实现RTMP的推流
集成GDLiveStreaming步骤
- 创建项目
- 打开终端
cd
到项目目录 - 执行
pod init
生成Profile
文件 - 在
target 你的项目名称 do
与end
直接添加pod 'GDLiveStreaming', :git => 'https://github.com/goodow/GDLiveStreaming.git'
pod 'VideoCore', :git => 'https://github.com/goodow/VideoCore.git'
pod 'glm', :podspec => 'https://raw.githubusercontent.com/goodow/GDLiveStreaming/master/glm.podspec' - 执行
pod install
命名,等待其安装完毕,打开白底的你的名称.xcworkspace
文件. 到此GDLiveStreaming
安装完毕.
GDLiveStreaming基本使用
- 导入如下头文件
#import <GPUImage/GPUImageVideoCamera.h>
#import <GPUImage/GPUImageView.h>
#import <GDLiveStreaming/GDLRawDataOutput.h> - 实现思路
- 创建视频摄像头
- 设置摄像头帧率
- 设置摄像头输出图片的方向
- 创建用于展示视频的GPUImageView
- 添加GPUImageView为摄像头的的输出目标
- 创建
GDLRawDataOutput
对象 - 添加数据输出对象为摄像头输出目标
- 开始捕获视频
- 开始上传视频
- 代码实现
// 1. 创建视频摄像头
self.camera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset1280x720
cameraPosition:AVCaptureDevicePositionBack];
// 2. 设置摄像头帧率
self.camera.frameRate = 25;
// 3. 设置摄像头输出视频的方向
self.camera.outputImageOrientation = UIInterfaceOrientationPortrait;
// 4.0 创建用于展示视频的GPUImageView
GPUImageView *imageView = [[GPUImageView alloc] init];
imageView.frame = self.view.bounds;
[self.view addSubview:imageView];
// 4.1 添加GPUImageView为摄像头的的输出目标
[self.camera addTarget:imageView];
// 5. 创建原始数据输出对象
GDLRawDataOutput *output = [[GDLRawDataOutput alloc] initWithVideoCamera:self.camera withImageSize:CGSizeMake(720, 1280)];
// 6. 添加数据输出对象为摄像头输出目标
[self.camera addTarget:output];
// 7.开始捕获视频
[self.camera startCameraCapture];
// 8.开始上传视频
[output startUploadStreamWithURL:@"rtmp://192.168.41.35:1935/gzhm" andStre amKey:@"room"];
GDLiveStreaming扩展
- GPUImageVideoCamera常见用方法
/** 开始捕获
*/
- (void)startCameraCapture;
/** 停止捕获
*/
- (void)stopCameraCapture;
/**暂停捕获
*/
- (void)pauseCameraCapture;
/**恢复捕获
*/
- (void)resumeCameraCapture;
///前置摄像头与后置摄像头切换
- (void)rotateCamera
- GDLRawDataOutput常见用方法
///开始上传视频流, streamKey是拼接在rtmpUrl后面的路径名称,可以理解为视频的直播中的房间编号.
- (void)startUploadStreamWithURL:(NSString *)rtmpUrl andStreamKey:(NSString *)streamKey;
///停止上传视频流
- (void)stopUploadStream;
iOS直播-基于RTMP的视频推送的更多相关文章
- iOS:基于RTMP的视频推流
iOS基于RTMP的视频推流 一.基本介绍 iOS直播一出世,立马火热的不行,各种直播平台如雨后春笋,正因为如此,也同样带动了直播的技术快速发展,在IT界精通直播技术的猴子可是很值钱的.直播技术涉及的 ...
- (转)基于libRTMP的流媒体直播之 AAC、H264 推送
参考: 1,基于libRTMP的流媒体直播之 AAC.H264 推送 http://billhoo.blog.51cto.com/2337751/1557646
- 基于SignalR的消息推送与二维码描登录实现
1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...
- Android、iOS和Windows Phone中的推送技术
推送并不是什么新技术,这种技术在互联网时代就已经很流行了.只是随着进入移动互联网时代,推送技术显得更加重要.因为在智能手机中,推送从某种程度上,可以取代使用多年的短信,而且与短信相比,还可以向用户展示 ...
- Knative 实战:基于 Kafka 实现消息推送
作者 | 元毅 阿里云智能事业群高级开发工程师 导读:当前在 Knative 中已经提供了对 Kafka 事件源的支持,那么如何基于 Kafka 实现消息推送呢?本文作者将以阿里云 Kafka 产品为 ...
- 李洪强iOS经典面试题154- 通知与推送
李洪强iOS经典面试题154- 通知与推送 通知与推送 本地通知和远程推送通知对基本概念和用法? image 本地通知和远程推送通知都可以向不在前台运行的应用发送消息,这种消息既可能是即将发生的事 ...
- 基于Web的数据推送技术(转)
基于Web的数据推送技术 对于实时性数据显示要求比较高的系统,比如竞价,股票行情,实时聊天等,我们的解决方案有以下几种.1. HTTP请求发送模式,一般可以基于ajax的请求,比如每3秒一次访问下服务 ...
- Android 基于Netty的消息推送方案之对象的传递(四)
在上一篇文章中<Android 基于Netty的消息推送方案之字符串的接收和发送(三)>我们介绍了Netty的字符串传递,我们知道了Netty的消息传递都是基于流,通过ChannelBuf ...
- Android 基于Netty的消息推送方案之字符串的接收和发送(三)
在上一篇文章中<Android 基于Netty的消息推送方案之概念和工作原理(二)> ,我们介绍过一些关于Netty的概念和工作原理的内容,今天我们先来介绍一个叫做ChannelBuffe ...
随机推荐
- PTCRS 目前投资最成功的的PTC站点
PTCRS算是我投资的比较成功的一个PTC网站,因此首先和大家介绍一下,因为PTC最开始的几个月盈利空间非常大,即使这样,在这20多天里面站长也已经稍微调低了盈利水平. 目前基本上Golden会员租赁 ...
- PL/SQL如何远程连接ORACLE
如何在没有装ORACLE的电脑上用PLSQL远程连接ORACLE 下载instantclient,我的是WIN7,下载的是instantclient-basiclite-nt-12.1.0.1.0.z ...
- ArcGIS Server的切图原理深入【转】
http://blog.newnaw.com/?p=69 GoogleMap,Virtual Earth,YahooMap等,目前所有的WebGIS都使用了缓存机制以提高地图访问速度.原理都是将地图设 ...
- 使用maven命令搭建多模块企业级项目
http://www.cnblogs.com/xdp-gacl/p/4242221.html
- SQL Server-数据库中强varchar类型使用sum函数计算总和
select sum(cast(totalmoney AS DECIMAL)) as totalmoney from dbo.t_wxbill
- [Angular] Improve Server Communication in Ngrx Effects with NX Data Persistence in Angular
Communicating with a remote server via HTTP presents an extra level of complexity as there is an inc ...
- minic 类型声明与变量定义句型处理
#include "token_define.h" //这个文件是用来处理句型的,对于算术表达式都是放在前面的那个头文件中来处理 typedef struct _handle_tr ...
- 虚拟机快照,克隆,静态ip地址的设置(centos 6.5)
一.快照 例如,当我们在虚拟机上做实验或是作测试时,难免碰到一些不熟悉的地方,此时做个快照,备份一下当前的系统状态,一旦操作错误,可以很快还原到出错前的状态,完成实验,最终避免一步的失误导致重新开始整 ...
- winlogon.exe应用程序错误怎么办
winlogon.exe应用程序错误 求解决办法,重装,还原一定能解决就不要说了,我要其他办法 最佳答案 winlogon.exe 是控制你的系统登陆的程序,是系统绝对核心进程,用来管理系统用户登陆! ...
- Unity3D实现3D立体游戏原理及过程,需偏振眼镜3D显
http://tieba.baidu.com/p/3038509618?fr=ala0&pstaala=3