Nginx+rtmp+ffmpeg搭建流媒体服务器

说明:

  nginx搭建流媒体服务需要用到 nginx-rtmp-module 模块

具体操作步骤:

安装nginx

(1)下载第三方扩展模块nginx-rtmp-module

# mkdir module && cd module          //创建一个存放模块的目录
# wget https://github.com/arut/nginx-rtmp-module/archive/master.zip //下载模块
# unzip master.zip         //解压
# ls nginx-rtmp-module-master/ //查看模块目录

(2)编译安装nginx说明:此处由于我这边已有lnmp运行项目的环境,直接动态添加的 nginx-rtmp-module模块; 动态参加可参考这里

# yum -y install pcre-devel openssl openssl-devel        //安装依赖
# wget http://nginx.org/download/nginx-1.12.2.tar.gz //下载nginx包
# tar xf nginx-1.12..tar.gz
# ./configure --prefix=/opt/nginx-1.9. --add-module=/root/module/nginx-rtmp-module-master --with-http_ssl_module //编译安装nginx,并指定上面下载的模块路径
# make
# make install

(3)修改nginx配置文件,添加如下内容并重新载入配置文件

# vim nginx.conf
rtmp {
server {
listen ; #监听的端口号
application myapp { #自定义的名字
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
hls_fragment 1s;
hls_playlist_length 3s;
}
}
}
# /etc/init.d/nginx reload
user  root;
worker_processes ;
worker_cpu_affinity ;
worker_rlimit_nofile ; #error_log logs/error.log warn;
pid /var/run/nginx.pid; events {
worker_connections ;
use epoll;
} rtmp {
server {
listen ;
application myapp {
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/rtmp/hls;
hls_fragment 1s;
hls_playlist_length 3s;
}
}
} http { limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s; autoindex off;
include /opt/nginx-1.9./conf/mime.types;
default_type application/octet-stream; log_format main '$remote_addr [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for $request_length $request_time "$upstream_response_time" "$upstream_addr" $host $server_addr'; #access_log logs/access.log main;
server_tokens off;
sendfile on;
#tcp_nopush on; keepalive_timeout ; gzip on;
gzip_min_length 1K;
gzip_buffers 16K;
gzip_comp_level ;
gzip_http_version 1.0;
gzip_types application/json text/javascript text/plain application/x-javascript text/css application/xml text/xml;
#gzip_types application/json text/javascript text/plain application/x-javascript text/css application/xml text/xml image/jpeg image/gif image/png;
gzip_disable "MSIE [1-6]\.";
client_max_body_size 500M; #server {
# listen default;
# return ;
#} include /opt/nginx-1.9./conf/conf.d/*.conf; }

完整nginx.conf

安装ffmpeg

ffmpeg命令参考这位朋友的文章:https://www.jianshu.com/p/049d03705a81

(1)安装依赖

# yum install yasm -y

(2)下载ffmpeg并安装

# git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg    //下载ffmpeg
# cd ffmpeg
# ./configure --prefix=/usr/local/ffmpeg
# make
# make install

(3)拷贝命令到/usr/bin(方便后面调用)

# ls /usr/local/ffmpeg/        //查看安装目录生成的文件
bin include lib share
# cp /usr/local/ffmpeg/bin/* /usr/bin/

测试

(1)启用ffmpeg进行推流

# ffmpeg -i rtsp://192.168.1.175:554/11 -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -r 25 -b:v 500k -s 640*480 -f flv rtmp://192.168.1.11:1935/myapp/23
-i 要处理视频文件的路径,此处地址是一个监控摄像头
-s 像素
rtmp://192.168.1.11:1935/myapp/23 说明:rtmp://IP:PORT/ myapp指nginx配置文件中自定义的,22指输出文件的名字
-f 强迫采用flv格式
别的参数参考上面那位老兄的

(2)打开VLC 媒体——>流——>网络

(3)进入服务器查看输出的位置可以发现已生成文件

# ll /tmp/hls/
total
-rw-r--r-- root root Mar : -.ts
-rw-r--r-- root root Mar : -.ts
-rw-r--r-- root root Mar : -.ts
-rw-r--r-- root root Mar : -.ts
-rw-r--r-- root root Mar : .m3u8

(4)还可以使用浏览器这样访问 http://192.168.1.11/hls/22.m3u8

至此就搭建完成了,至于别的操作后续再写

Linux-Nginx+rtmp+ffmpeg搭建流媒体服务器的更多相关文章

  1. centos7+nginx+rtmp+ffmpeg搭建流媒体服务器(保存流目录与http目录不要随意配置,否则有权限问题)

    搭建nginx-http-flv-module升级代替rtmp模块,详情:https://github.com/winshining/nginx-http-flv-module/blob/master ...

  2. (转)Nginx+rtmp+ffmpeg搭建流媒体服务器

    (1)下载第三方扩展模块nginx-rtmp-module # mkdir module && cd module //创建一个存放模块的目录 # wget https://githu ...

  3. centos7+nginx+rtmp+ffmpeg搭建流媒体服务器

    1.安装前需要的工具 #net-tool 查本地IP #wget 下载安装包 #unzip 解压zip包 #gcc gcc-c++ perl 编译软件包用 yum install -y net-too ...

  4. 使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

    参考: 1,使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(一)http://blog.csdn.net/xdwyyan/article/details/4319 ...

  5. nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

    参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.co ...

  6. 流媒体技术学习笔记之(一)nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

    参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.co ...

  7. nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器[转]

    转 :http://redstarofsleep.iteye.com/blog/2123752 Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个n ...

  8. Nginx+rtmp+ffmpeg 搭建推流服务器

    1. 安装nginx服务器 1.1 clone $ brew tap denji/homebrew-nginx 1.2 安装 $ brew install nginx-full --with-rtmp ...

  9. Ubuntu下使用nginx和nginx-rtmp-module搭建流媒体服务器的正确姿势

    之前在使用nginx和nginx-rtmp-module搭建流媒体服务器的时候遇到一个很尴尬的问题,就是在把nginx-rtmp-module模块添加到nginx中去的时候,我最开始采取的做法是先卸载 ...

随机推荐

  1. Java运行时环境---内存划分

    背景:听说Java运行时环境的内存划分是挺进BAT的必经之路. 内存划分: Java程序内存的划分是交由JVM执行的,而不像C语言那样需要程序员自己买单(C语言需要程序员为每一个new操作去配对del ...

  2. Android远程桌面助手(B1309)

    修改了窗口缩放的处理,支持Android Car等非常规分辨率的Android设备: 修改了获取Android端软件版本的方法,优化了APK的升级逻辑: 优化了远程输入法功能,支持利用PC端输入法快速 ...

  3. 基于Android的模拟点击探索

    前言 压力测试中,一般会用到自动化测试.准备写一个APP,可以记录屏幕上的点击事件,然后通过shell命令来模拟自动执行.shell指令,比较容易实现.那么,关键的一步是获取点击的坐标.对于Andro ...

  4. 用markdown写博客

    目录 用markdown写博客 前言 标题 段落 引用区块 代码块 列表 分隔线 链接 强调.加粗.下划线.删除线 图片 智能链接 表格 转义序列 用markdown写博客 前言 博客园支持用mark ...

  5. 轻松学习UML之用例图,时序图

    本文主要讲解UML图中的用例图(Use Case Diagram)和时序图(Sequence Diagram)相关内容,如有不足之处,还请指正. 概述 统一建模语言(UML,UnifiedModeli ...

  6. com.netflix.zuul.exception.ZuulException: Hystrix Readed time out

    通过API网关路由来访问用户服务,zuul默认路由规则 :http://zuul的Host地址:zuul端口/要调用的服务名/服务方法地址 浏览器中打开http://127.0.0.1:8000/wa ...

  7. export,export default和import的区别以及用法

    首先要知道export,import ,export default是什么 ES6模块主要有两个功能:export和import export用于对外输出本模块(一个文件可以理解为一个模块)变量的接口 ...

  8. C# 图片文件与字符串之间的转换

    1.将图片文件转化为字符串类型 2.将字符串类型的图片数据转换为本地图片保存

  9. Core官方DI剖析(1)--ServiceProvider类和ServiceCollection类

    前段时间看了蒋老师的Core文章,对于DI那一块感觉挺有意思,然后就看了一下Core官方DI的源码,这也算是第一个看得懂大部分源码的框架,虽然官方DI相对来说特别简单, 官方DI相对于其它框架(例如 ...

  10. 你注意到 .Net Framework 和 .Net Core 中使用 Session 的区别了吗?

    起因 在测试一个例子时发现的问题,这个示例实现的功能是刷新页面也能保持表格锁定列的状态,先看下页面的完成效果: 测试中发现,几乎相同的代码: 在 FineUIMvc(Net Framework)下没有 ...