Mac使用nginx+rtmp服务器
一、安装Homebrow
已经安装了brow的可以直接跳过这一步。
执行命令
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
如果已经安装过,而想要卸载:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
二、安装nginx
先glone nginx项目到本地:
brew tap homebrew/nginx
执行安装:
brew install nginx-full --with-rtmp-module
安装过程比较缓慢,耐心等待
通过操作以上步骤nginx和rtmp模块就安装好了,下面开始来配置nginx的rtmp模块
首先来看看我们的nginx安装在哪里了
brew info nginx-full
执行上面的命令后我们可以看到信息
nginx安装所在位置
/usr/local/Cellar/nginx-full/1.10.1/bin/nginx
nginx配置文件所在位置
/usr/local/etc/nginx/nginx.conf
三、运行nginx
执行命令 ,测试下是否能成功启动nginx服务
nginx
命令行如下图所示
在浏览器地址栏输入:http://localhost:8080 (直接点击)
如果出现
代表nginx安装成功了
如果终端上提示
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
则表示8080
端口被占用了, 查看端口PID
lsof -i tcp:8080
kill掉占用8080端口的PID
kill 9603(这里替换成占用8080端口的PID)
然后重新执行nginx
nginx常用方法:重新加载配置文件
nginx -s reload
或 sudo nginx -c /usr/local/etc/nginx/nginx.conf
重新加载日志:
nginx -s reopen
// 停止 nginx
nginx -s stop
// 有序退出 nginx
nginx -s quit
四、配置rtmp
现在我们来修改nginx.conf这个配置文件,配置rtmp
复制nginx配置文件所在位置
/usr/local/etc/nginx/nginx.conf
打开Finder Shift + command + G前往,用记事本工具打开nginx.conf
http {
……
}
在http节点后面加上rtmp配置:
rtmp {
server {
listen 1935;
#直播流配置
application rtmplive {
live on;
#为 rtmp 引擎设置最大连接数。默认为 off
max_connections 1024;
}
application hls{
live on;
hls on;
hls_path /usr/local/var/www/hls;
hls_fragment 1s;
}
}
}
六、安装ffmepg工具
brew install ffmpeg
安装这个需要等一段时间等待吧 然后准备一个视频文件作为来推流,然后我们在安装一个支持rtmp协议的视频播放器,Mac下可以用VLC
显示下图表示ffmpeg安装完毕
ffmepg 安装完成后可以开始推流了
一、FFmpeg推RTMP流准备工作
首先确保自已已经安装了nginx + rtmp服务器。
打开配置文件nginx.conf
完成如下配置
如果没有nginx + rtmp服务器,请阅读我的另一篇简书文章
Mac搭建nginx+rtmp服务器
二、FFmpeg推流
1.推流MP4文件
- 视频文件地址:/Users/xu/Desktop/bangbangbang.mp4
- 推流拉流地址:rtmp://localhost:1935/rtmplive/home
- acc:RTMP的音频格式
- flv: RTMP的视频格式
ffmpeg -re -i /Users/liang/Documents/loginmovie.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/home
若提示错误,输入
ffmpeg -re -i /Users/liang/Documents/loginmovie.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/rtmplive/home
输入命令行后,暂时先不要点回车,等设置好本地拉流后,再进行推流。
2.本地拉流MP4文件
- 打开VLC播放器
- 设置播放地址
- 设置拉流地址
rtmp://localhost:1935/rtmplive/home
拉流地址.5 - 开始推流,点击open后开始播放。
推流成功!
三、用ffmpeg推流桌面以及推流摄像头进行直播
1.如果希望将桌面录制或者分享,可以使用命令行如下:
ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/rtmplive/home
- 这个只能够推桌面。
2.如果需要桌面+麦克风,比如一般做远程教育分享 命令行如下:
ffmpeg -f avfoundation -i "1:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/rtmplive/home
- 这个可以推桌面+麦克风。
3.如果需要桌面+麦克风,并且还要摄像头拍摄到自己,比如一般用于互动主播,游戏主播,命令行如下
ffmpeg -f avfoundation -framerate 30 -i "1:0" \-f avfoundation -framerate 30 -video_size 640x480 -i "0" \-c:v libx264 -preset ultrafast \-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/rtmplive/home
- 这个可以推桌面+麦克风,并且摄像头把人头放在界面下面
四、FFmpeg常用基本命令
1.分离视频音频流
ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流
2.视频解复用
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
3.视频转码
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264 //转码为码流原始文件
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //转码为码流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //转码为封装文件
- -bf B帧数目控制
- -g 关键帧间隔控制
- -s 分辨率控制
4.视频封装
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
5.视频剪切
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取图片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切视频
- -r 提取图像的频率
- -ss 开始时间
- -t 持续时间
6.视频录制
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
7.YUV序列播放
ffplay -f rawvideo -video_size 1920x1080 input.yuv
8.YUV序列转AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
9.常用参数说明:
主要参数:
i 设定输入流
f 设定输出格式
ss 开始时间
视频参数:
b 设定视频流量,默认为200Kbit/s-r 设定帧速率,默认为25
s 设定画面的宽与高-aspect 设定画面的比例
vn 不处理视频-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
音频参数:
ar 设定采样率
ac 设定声音的Channel数
acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器an 不处理音频
注:很多时候出错都是没有重新加载配置文件导致的
./nginx -s reload
Mac使用nginx+rtmp服务器的更多相关文章
- Mac搭建nginx+rtmp服务器
nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 一.安装Homebrow 已经安装了brow的可以直接跳过这 ...
- Ubuntu18.04下配置Nginx+RTMP服务器,实现点播/直播/录制功能
2019.3.22更新 最新的nginx-1.15.9可与openssl1.1.1兼容了 以下原文: 这个东西我眼馋挺久了,最近终于试玩了一下,感觉很好玩,在搭建的过程在也遇到一些坑,这里总结一下 安 ...
- Windows 搭建 nginx rtmp服务器
1.环境开发环境:windows开发工具:ffmpeg.nginx.nginx-rmtp-module.vlc media player播放器 2.准备文件官方ffmpeg下载地址:http://ww ...
- Centos7 搭建Nginx+rtmp+hls直播推流服务器
1 准备工具 使用yum安装git [root~]# yum -y install git 下载nginx-rtmp-module,官方github地址 // 通过git clone 的方式下载到服务 ...
- iOS开发之利用IJKPlayer+nginx+rtmp搭建直播的推流和拉流
最近项目中想实现直播的功能,所以研究了一段时间的直播功能,当然也是在别人的基础上不断的学习实现的,所以记录一下,希望对大家有所帮助. 直播拉流功能: 这里使用了开源的IJKPlayer第三框架,ijk ...
- Mac上搭建直播服务器Nginx+rtmp
简介 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 步骤安装 1.安装Homebrow Homebrew简 ...
- mac搭配Nginx服务器常见问题
推流服务器主要是使用了开源的nginx和rtmp模块,网上也有很多资料,不过对有些可能出现的问题没有很好的总结. 安装brew 使用Mac进行开发很久的老司机应该对这个工具很熟悉了.brew是一个第三 ...
- centos7+nginx+rtmp+ffmpeg搭建流媒体服务器(保存流目录与http目录不要随意配置,否则有权限问题)
搭建nginx-http-flv-module升级代替rtmp模块,详情:https://github.com/winshining/nginx-http-flv-module/blob/master ...
- Mac上搭建直播服务器Nginx
Mac上搭建直播服务器Nginx 1.安装Homebrew,执行命令 Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就 ...
随机推荐
- 团队作业4——第一次项目冲刺(Alpha版本)1st day
一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 1.界面 主界面以及游戏界面大体上完成了 界面内的功能正在写 2.登陆方面 QQ授权还未申请 申请完在登陆界面完成后实现用QQ ...
- 201521123099 《Java程序设计》第2周学习总结
1. 本周学习总结 1.Java对我来说难度还是很大.需要花更多时间去学习. 2. 书面作业 1.使用Eclipse关联jdk源代码,并查看String对象的源代码(截图)?分析String使用什么来 ...
- 201521123070 《JAVA程序设计》第14周学习总结
1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 Q1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现 ...
- Eclipse rap 富客户端开发总结(8) : 发布到tomcat后解决rap编码和字符集的问题
1 .解决 rap 字符集乱码的问题 字符集问题,解决办法: 在plugin.xml - build.properties 中添加 javacDefaultEncoding.. = UTF-8 ...
- Struts2开山篇【引入Struts、自定义MyStruts框架】
前言 这是Strtus的开山篇,主要是引入struts框架-为什么要引入struts,引入struts的好处是什么-. 为什么要引入struts? 首先,在讲解struts之前,我们来看看我们以前写的 ...
- Spring MVC 的文件下载
在看Spring MVC文件下载之前请先看Spring MVC文件上传 地址:http://www.cnblogs.com/dj-blog/p/7535101.html 文件下载比较简单,在超链接中指 ...
- mongodb 面试题总结
mongodb 面试题总结 1 nosql和关系型数据库的区别 2 nosql数据库有哪些 redis mongodb hbase 3 MySQL与mongodb本质之间最基本的差别是什么 差别在多方 ...
- 【轉】JS,Jquery获取各种屏幕的宽度和高度
Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...
- Spring c3p0连接池无法释放解决方案
通过c3p0配置连接池的时候,在进行压力测试的时候,日志出现了这样一个错误:Data source rejected establishment of connection, message from ...
- JDFS:一款分布式文件管理系统,第三篇(流式云存储)
一 前言 看了一下,距离上一篇博客的发表已经过去了4个月,时间过得好快啊.本篇博客是JDFS系列的第三篇博客,JDFS的目的是为了实现一个分布式的文件管理系统,前两篇实现了基本的上传.下载功能,但是那 ...