http://www.jianshu.com/p/8ea016b2720e

效果图

iTools有点卡, 但是推到服务器倒是很快的.

推流

前言

这篇blog是iOS视频直播初窥:<喵播APP>的一个补充. 因为之前传到github上的项目中没有集成视频的推流.有很多朋友简信微博上问我推流这部分怎么实现的. 所以, 我重新集成了RTMP的推流, 合并到了之前的项目中.

下载链接

github(完整版视频直播)

blog详解(建议大家结合这篇一起看)

Mac搭建nginx+rtmp服务器

我个人电脑里面很早以前就搭建过nginx+rtmp服务器, 但是昨天在公司电脑上搭建的时候, 手动输入命令的时候, 还是出现了bug(所以, 建议大家直接复制命令, 不要手动输入命令). 所以记录一份详细的搭建步骤, 防止再次跳坑...
此段教程参考自推酷:Mac搭建nginx+rtmp服务器

    1. 打开终端, 查看是否已经安装了Homebrew, 直接终端输入命令
man brew

如果Mac已经安装了, 会显示一些命令的帮助信息. 此时输入Q退出即可, 直接进入第二步.
反之, 如果没有安装,执行命令

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如果安装后, 想要卸载

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
  • 2.安装nginx

先clone nginx项目到本地

brew tap homebrew/nginx

执行安装:

brew install nginx-full --with-rtmp-module

此时, nginx和rtmp模块就安装好了
输入命令:

nginx

在浏览器里打开http://localhost:8080
如果出现下图, 则表示安装成功

安装成功

如果终端上提示

nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
.....

则表示8080端口被占用了, 查看端口PID

lsof -i tcp:8080

根据端口PID, kill掉(这儿的9603换成你自己8080端口的PID)

kill 9603

然后重新执行nginx, 打开http://localhost:8080

  • 3.配置nginx和ramp
    首先我们查看nginx安装到哪了
brew info nginx-full

如图, 找到nginx.conf文件所在位置

nginx.conf

通过vim或者点击Finder->前往->前往文件夹->输入/usr/local/etc/nginx/nginx.conf->用记事本工具(推荐Sublime Text)打开nginx.conf.

直接滚到最后一行, 在最后一个}(即最后的空白处, 没有任何{})后面添加

# 在http节点后面加上rtmp配置:
rtmp {server {listen 1935;application rtmplive {live on;record off;}}
}

然后重启nginx(其中的1.10.1要换成你自己安装的nginx版本号, 查看版本号用nginx -v命令即可)

/usr/local/Cellar/nginx-full/1.10.1/bin/nginx -s reload

昨天, 就在执行这段命令的时候, 坑出现了.(如果你命令执行成功, 重启成功了, 没有没有任何异常, 请直接跳转到下一步)
执行命令的时候, 报异常

nginx: [emerg] unknown directive “rtmp” in /usr/local/etc/nginx/nginx.conf:119

rtmp成了未知指令. 我赶紧Google, 将其中的答案都试了一遍, 这个bug涛声依旧. 最后实在没办法了, brew list查看所有安装的模块, 才发现是自己手动敲命令的时候, 将nginx-full变成了nginx -full.

上解决方案:
卸载nginx

brew uninstall nginx

再次安装nginx

brew install nginx-full --with-rtmp-module
    1. 安装ffmpeg

执行命令

brew install ffmpeg

安装ffmpeg时间就要长一点了. 如果速度过慢, 建议FQ. 不过也才50多M的东西, 耐心一点就好. 等待的时间里, 再安装一个支持rtmp协议的视频播放器VLC

    1. ffmpeg推流
      以我桌面的一个loginmovie.mp4(自己准备一个视频文件, 也可以用我github项目中Resource文件下的两个视频文件)为例, 执行推流命令

ffmpeg -re -i /Users/sunlin/Desktop/loginmovie.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/rtmplive/room

将视频推流到服务器后,打开VLC,然后File->open network->输入:

rtmp://localhost:1935/rtmplive/room

效果如图

推流

快速集成直播推流

前提条件:

  • 去github上下载最新的喵播项目.
  • 根据上面教程配置好nginx+rtmp服务器

原先准备自己实现一下直播推流,但是今天在技术群聊的时候, 有朋友推荐了优酷土豆旗下来疯直播前不久开源的iOS推流框架LFLiveKit. 是用OC写的, 很适合学习(我也准备深入研究一下这个框架, 有什么疑问大家可以一起探讨), 集成也非常简单, 几句代码就OK了.

下载好我写的喵播后, 在Xcode左下方直接搜索ShowTimeViewController, 进入ShowTimeViewController.m. 搜索- (IBAction)living:(UIButton *)sender, 将里面的stream.url替换成你自己的rtmp地址即可.

tip: LFLiveKit已经集成了GPUImage, 如果项目中有集成GPUImage, 需要将之前的移除掉. 且集成LFLiveKit需要关闭Bitcode.

结案陈词

现在的喵播算得上是一个比较完整的视频直播项目了, 虽然用了很多第三方, 但是也节省了开发的时间, 提升了开发效率.
后期这个项目我还会不断的完善, 如果你有什么好的idea或者效果, 可以微博私信我, 如果我能搞定, 我会尽快加上去的.

github下载地址

完整版视频直播:喵播下载地址

联系我

github

简书

文/Monkey_ALin(简书作者)
原文链接:http://www.jianshu.com/p/8ea016b2720e
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

转载于:https://www.cnblogs.com/itlover2013/p/5668008.html

快速集成iOS基于RTMP的视频推流相关推荐

  1. 在直播软件搭建中,如何基于rtmp实现视频直播?

    最近几年直播软件搭建可谓大火,这也就导致了在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等.本文要讲解的是在直播软件搭建中,如何基于rtmp实现视频直 ...

  2. ffmpeg rtmp音视频推流实现

    ffmpeg rtmp音视频推流实现 紧接上篇文章,实现本地推流,需要经历容器层→解封装→容器层→协议层. 1.准备容器. 容器里有流.编码器等,需要对这些进行规定:为了方便理解,举个不恰当的例子,就 ...

  3. iOS - 直播流程,视频推流,视频拉流,简介,SMTP、RTMP、HLS、 PLPlayerKit

    收藏笔记 1 . 音视频处理的一般流程: 数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示 1.数据采集: 摄像机及拾音器收集视频及音频数据,此时得到的为原始数据 涉及技术或协议: ...

  4. Android开发基于RTMP实现视频直播

    前言 近两年时间,视频直播可谓大火.在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等.本文要讲解的是如何使用一系列免费工具,打造一套视频直播方案. 视 ...

  5. android rtmp流媒体服务器,Android 使用Rtmp音视频推流

    http://blog.csdn.net/a992036795/article/details/54583571 前言 本文介绍的是使用Android摄像头.麦克风采集的音.视频进行编码.然后通过li ...

  6. Android 使用Rtmp音视频推流

    前言 本文介绍的是使用Android摄像头.麦克风采集的音.视频进行编码.然后通过librtmp推送到流媒体服务器上的功能. 我所使用的环境:Android Studio 2.2.3 .NDK13. ...

  7. 日本大阪大学万伟伟研究员介绍基于WRS系统机器人的快速集成方法和应用

    智能机器人已经日益成为各种生产中不可或缺的主体,通过系统集成,可以使它以其灵活高效的特性组成各种各样的应用系统,提高了生产率,增强了柔性,适应了当今的发展趋势. <智能机器人时代的自动化与系统集 ...

  8. RTSP视频推流方法汇总

    1  基于rtsp-simple-server的视频推流 rtsp-simple-server是一个rtsp推流服务器,可以与gstreamer或ffmpeg结合进行推流.下载对应平台版本,直接运行即 ...

  9. iOS 直播推流 - 搭建基于RTMP的本地Nginx服务器

    前端时间,公司要调研直播相关的内容,特地花时间进行了一番调研. 本篇将记录其中的推流篇-本地推理播放测试. 关于Nginx: 配置Nginx以支持HLS.RTMP的推流与拉流,iOS系统使用LFLiv ...

最新文章

  1. linux ssh 脚本 密码,ssh自动登录的4种实现方法
  2. 基于visual Studio2013解决面试题之1002公共子串
  3. Apache访问日志切割
  4. 中澜视讯产品运营总监黄超强:产品+付费+未来汽车
  5. devstack部署openstack流程与相关问题的记录(ubuntu 16.04)
  6. 邵阳学院计算机科学与技术专业分最低,邵阳学院在湖南各专业录取最低分/最低位次...
  7. HarmonyOS之AI能力·实体识别
  8. Apache Flink 为什么能够成为新一代大数据计算引擎?
  9. 【Python】Matplotlib绘制日期型时间序列图
  10. java jdbc连接_java-jdbc数据库连接
  11. elementui带输入建议查询_2020年度初级会计成绩查询指南!查询入口+查询流程+常见问题答疑...
  12. 每天Leetcode 刷题 初级算法篇-数学问题-计数质数
  13. SpringMVC深度探险(四) —— SpringMVC核心配置文件详解
  14. PHP 多维数组转换一维数组
  15. web项目中图标的前端处理方案
  16. 计算机导论的论文范例,★计算机导论论文提纲范文计算机导论论文提纲格式模板...
  17. MATLAB APP全局变量的使用
  18. 【Java】爬虫,看完还爬不下来打我电话
  19. 运营商大数据有哪些获客方式?
  20. Ruby-Devise采用多种形式登录

热门文章

  1. 18 File Duplication and Pipes
  2. D3 selectselectAll
  3. numpy.argmax/argmin/max/min
  4. 云计算安全之CCSKv4.0(201910考的)
  5. 分布式SQL学习总结(1)——蚂蚁金服资深总监韩鸿源:像使用集中式数据库一样使用OceanBase分布式数据库
  6. Redis学习总结(7)——怎么保持缓存与数据库一致性?
  7. 技术人员如何创业《一》- 产品及想法
  8. Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例
  9. 湖南单招计算机专业大学排名,2021湖南单招学校排名及分数线:湖南单招分数线高吗?...
  10. ios java 加密_AES加密 - iOS与Java的同步实现