iOS开发之利用IJKPlayer+nginx+rtmp搭建直播的推流和拉流
最近项目中想实现直播的功能,所以研究了一段时间的直播功能,当然也是在别人的基础上不断的学习实现的,所以记录一下,希望对大家有所帮助。
直播拉流功能:
这里使用了开源的IJKPlayer第三框架,ijkplayer 是一款做视频直播的框架, 基于ffmpeg,是大多数搭建直播平台的首选框架,当然各大云平台都有自己的直播框架,具体大家使用的时候可以自行研究,有问题再留言,我这里不再说明框架的集成和拉流过程,具体的内容推荐两个链接,步骤比较齐全:
iOS中集成ijkplayer视频直播框架http://www.jianshu.com/p/1f06b27b3ac0
集成直播拉流的框架时间比较久,耐心等待一下,下面是集成时输出的部分内容:
打开终端, 进行合并, 命令行具体格式为:
打开终端,然后输入合并文件的终端命令,格式:
lipo -create 直接拖拽过来真机版本中的IJKMediaFramework文件 直接拖拽过来模拟器版本中的IJKMediaFramework文件 -output 直接拖拽过来一个保存将要生成文件的一个文件夹(可以在桌面上新建一个文件夹),然后在文件地址后面添加 /IJKMediaFramework
如果不理解,我建议在桌面上创建一个新的文件夹,然后将真机和模拟器版本的文件夹拖拽到新的文件夹中,然后进行上述的终端命令操作
如果输出的结果是error,而且生成的是以 .lipo结尾的文件,说明终端命令输入的有问题
lipo -create "真机版本路径" "模拟器版本路径" -output "合并后的文件路径"
如果输出这样的问题是:文件合并出现了问题,解决办法只能重新解压文件包,重新合并,一步一步来:
iOS直播拉流初窥:高仿<喵播APP>http://www.jianshu.com/p/b8db6c142aad
根据端口PID, kill掉(这儿的9603换成你自己8080端口的PID)
kill 9603
然后重新执行nginx, 打开http://localhost:8080
- 3.配置nginx和ramp
首先我们查看nginx安装到哪了
brew info nginx-full
如图, 找到nginx.conf文件所在位置
通过vim或者点击Finder->前往->前往文件夹->输入/usr/local/etc/nginx/nginx.conf->打开nginx.conf(推荐使用文本编辑,当然只要打开可以编辑并保存就行)
直接滚到最后一行, 在最后一个}(即最后的空白处, 没有任何{})后面添加
# 在http节点后面加上rtmp配置:
rtmp {
server {
listen 1935;
application rtmplive {
live on;
record off;
}
}
}
然后重启nginx(其中的1.12.0要换成你自己安装的nginx版本号, 查看版本号用nginx -v命令即可)
/usr/local/Cellar/nginx-full/1.12.0/bin/nginx -s reload
图:
如果出现问题,解决方案:
卸载nginx
brew uninstall nginx
再次安装nginx
brew install nginx-full --with-rtmp-module
- 安装ffmpeg
执行命令
brew install ffmpeg
安装ffmpeg时间就要长一点了. 如果速度过慢, 建议FQ. 不过也才50多M的东西, 耐心一点就好. 等待的时间里, 再安装一个支持rtmp协议的视频播放器VLC
安装命令输入后,会提示你 点击return或者任意键继续,同时需要输入电脑开机密码,没有直接敲回车
你可以在推流之前找到一个视频文件放在桌面上,然后推流查看的操作过程:先打开VLC,然后File—》open network —》输入:rtmp://localhost:1935/rtmplive/room,然后在终端输入推流命令:ffmpeg -re -i /Users/hbbhao/Desktop/login_video.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/rtmplive/room,就会看到实时的效果
推流成功:
源码下载+使用方法:http://pan.baidu.com/s/1miFmD0s好尴尬,文件有点大,GitHub上传不上去了,从百度云上下载吧,有问题可以留言。
拉流播放的地址替换:(本地IP地址查看方法:http://blog.csdn.net/hbblzjy/article/details/73250491)
推流地址替换:(本地IP地址查看方法:http://blog.csdn.net/hbblzjy/article/details/73250491)
如果输出了错误:
ERROR: PILI_RTMP_Connect0, failed to connect socket. 60 (Operation timed out)或者61(connect refuse)
ERROR: WriteN, PILI_RTMP send error 9, Bad file descriptor, (140 bytes)这类问题的解决办法:1、首先确认利用终端命令测试的推流已关闭,如果不确定输入终端命令exit推出,然后关闭终端;2、打开偏好设置选择安全与隐私关闭防火墙;3、修改ShowTimeViewController, 进入ShowTimeViewController.m. 搜索- (IBAction)living:(UIButton *)sender, 将里面的stream.url替换成你自己的IP地址即可,一定要使用IP地址,不能使用localhost代替,格式:rtmp://192.168.10.86(切记用数字ip):1935/rtmplive/room
重启nginx+rtmp服务器方法:
iOS开发之利用IJKPlayer+nginx+rtmp搭建直播的推流和拉流的更多相关文章
- Mac上搭建直播服务器Nginx+rtmp,实现手机推流、拉流
转载自http://www.cnblogs.com/jys509/p/5649066.html 简介 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网 ...
- ffmpeg处理rtmp/文件/rtsp的推流和拉流
ffmpeg处理rtmp/文件/rtsp的推流和拉流 本demo演示了利用ffmpeg从服务器拉流或本地文件读取流,更改流url或文件类型名称发送回服务器或存到本地的作用. 由于本程序只写了3个小 ...
- 用FFmpeg+nginx+rtmp搭建环境实现推流
Windows: 1.下载文件: 链接:https://pan.baidu.com/s/1c2LmIHHw-dwLOlRN6iTIMg 提取码:g7sj 2.解压文件: 解压到nginx-1.7.11 ...
- 三、Windows下用FFmpeg+nginx+rtmp搭建直播环境 实现推流、拉流
一.环境 1.开发环境:windows 2.开发工具:FFmpeg.nginx.nginx-rmtp-module (链接:https://pan.baidu.com/s/119d2GeMzddas_ ...
- 流媒体压力测试rtmp&hls(含推流和拉流)
http://blog.csdn.net/sinat_34194127/article/details/50816045 [root@localhost ~]# yum install git unz ...
- Ubuntu中使用Nginx+rtmp搭建流媒体直播服务
一.背景 本篇文章是继上一篇文章<Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务>文章而写,在上一篇文章中我们搭建了一个点播服务器,在此基础上我们再搭建一个直播服务器, ...
- nginx + rtmp 搭建流媒体服务器
一.安装nginx服务器 1.路径说明: 路径:/usr/local/src 2.下载nginx-rtmp-module (我这里的目录是在/usr/local/src/下面) cd /usr/loc ...
- nginx + nginx-rtmp-module搭建直播流服务器实现推流实时直播功能
业务需求 最近公司在做养老相关的业务,现在需要子女从小程序端对家里的老人通过家庭终端交互屏进行实时看护. 解决方案 第三方的一些现成的服务:腾讯音视频通话.直播功能; 阿里的音视频通信;两者都挺好的, ...
- Centos7 搭建Nginx+rtmp+hls直播推流服务器
1 准备工具 使用yum安装git [root~]# yum -y install git 下载nginx-rtmp-module,官方github地址 // 通过git clone 的方式下载到服务 ...
随机推荐
- [BZOJ1131]Sta
Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N<=1000000 下面N-1条边. Output ...
- c语言数组拷贝
#include <string.h> // 如果要从数组a复制k个元素到数组b,可以这样做 memcpy(b,a,sizeof(int)*k);
- spark SQL学习(综合案例-日志分析)
日志分析 scala> import org.apache.spark.sql.types._ scala> import org.apache.spark.sql.Row scala&g ...
- Css(样式)
CSS三种样式 1.行内样式 ①将css样式与html,完全糅杂在一起,不符合w3c关于“内容与表现分离”的基本规范,不利于后期维护. ②优先级最高. 2.内部样式表 ...
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Sum
2017-09-16 12:13:44 writer:pprp 特判 #include <iostream> using namespace std; int main() { int c ...
- 《用 Python 学微积分》笔记 2
<用 Python 学微积分>原文见参考资料 1. 13.大 O 记法 比较两个函数时,我们会想知道,随着输入值 x 的增长或减小,两个函数的输出值增长或减小的速度究竟谁快谁慢.通过绘制函 ...
- Nordic nRF5 SDK和softdevice介绍
SDK和Softdevice的区别是什么?怎么选择SDK和softdevice版本?芯片,SDK和softdevice有没有版本兼容问题?怎么理解SDK目录结构?SDK帮助文档在哪里?Softdevi ...
- Python 基础教程
Python 基础教程 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像P ...
- 明明白白AOP
引子: AOP(面向方面编程:Aspect Oriented Programing)和IoC一样是Spring容器的内核,声明式事务的功能在此基础上开花结果.但是AOP和OOP差别较大,要很好地理解这 ...
- 二十八 Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制
cookie禁用 就是在Scrapy的配置文件settings.py里禁用掉cookie禁用,可以防止被通过cookie禁用识别到是爬虫,注意,只适用于不需要登录的网页,cookie禁用后是无法登录的 ...