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 的方式下载到服务 ...
随机推荐
- Win10下配置Java 环境变量
在Win10中配置环境变量的方法跟在Win8和Win7中有些不同,看了看网上好多还是Win7/8里面的配置方法.虽然从原理上基本上没什么问题,但有些细节却会让人很苦恼.特意整理下新的配置方法.我假定你 ...
- libevent库介绍--事件和数据缓冲
首先在学习libevent库的使用前,我们还要从基本的了解开始,已经熟悉了epoll以及reactor,然后从event_base学习,依次学习事件event.数据缓冲Bufferevent和数据封装 ...
- SaltStack匹配target-第六篇
练习内容 Salt远程执行中目标选择常用的模式 1.通配符匹配 2.正则表达式匹配 3.List支持 4.Grains匹配 5.IP地址匹配 6.混合匹配 7.Node groups 远程执行格式 t ...
- LeetCode——Find Minimum in Rotated Sorted Array II
Question Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allo ...
- 微服务(一)eureka
Eureka概述 一个简单的服务注册,服务发现架构 在CAP理论中,eureka选择了ap,作为注册中心,数据可用比数据不一致更重要 逻辑架构图 Eureka特性 1.当注册中心挂了,客户端之间依然可 ...
- 如何在repeater中找到checkbox并实现全选删除
checkbox使用客户端控件,且给repeater里边的checkbox添加ruanat=server属性表头中的chkTotal的属性一定不要加此属性....然后 全选的javascript代码 ...
- Android studio 2.3安装遇到的问题
我的安装系统环境:windows 10+jdk1.8.0_111 . 1.在安装Android studio 2.3之前,请安装最新的java jdk.Android studio的安装包里是不包含j ...
- 如何优雅的进入IT世界
原始地址:http://www.cocoachina.com/gamedev/misc/2014/0613/8808.html 以下三段是废话,请跳过. (废话段1)有文科生想了解IT世界.这并不 ...
- jmeter-对响应数据进行unicode转码
1,请求接口成功后,返回数据为unicode编码,查看不方便
- 做文件上传下载时报这个错com.alibaba.fastjson.JSONException: illegal identifier : \
::-exec-] DEBUG c.i.e.m.I.insertDataEmebeding - <== Updates: ::-exec-] ERROR c.i.e.c.CaseArchiveC ...