用FFmpeg+nginx+rtmp搭建环境实现推流
Windows:
1、下载文件:
链接:https://pan.baidu.com/s/1c2LmIHHw-dwLOlRN6iTIMg
提取码:g7sj
2、解压文件:
解压到nginx-1.7.11.3-Gryphon
3、进入windows的cmd;
> cd nginx-1.7.11.3-Gryphon //进入nginx的目录
> nginx.exe -c conf\nginx-win-rtmp.conf //运行rtmp配置文件
注意:此时命令行会一直处于执行中 不用理会 也不要关闭
测试:浏览器输入localhost:80 ,查看是否配置nginx启动成功!
4、推流:
ffmpeg -re -i 123.mp4 -vcodec libx264 -acodec aac -f flv rtmp://你的ip地址:1935/live/home
5、拉流:
电脑打开vlc播放器 输入地址:rtmp://你的ip地址:1935/live/home
Linux:
1、安装工具:
#gcc gcc-c++ perl 编译软件包用
yum install -y net-tools wget unzip gcc gcc-c++ perl
2、安装nginx及rtmp:
#切换的homme目录 cd /home
下载并解压pcre
#下载pcre包 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz #解压pcre包 tar -zxvf pcre-8.41.tar.gz
下载并解压zlib
#下载zlib包 wget http://www.zlib.net/zlib-1.2.11.tar.gz #解压zlib包 tar -zxvf zlib-1.2.11.tar.gz
下载并安装openssl
#下载openssl包 wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1i.tar.gz #解压openssl包 tar -zxvf openssl-1.0.1i.tar.gz #切换到openssl里 cd openssl-1.0.1i #生成配置文件 默认配置 ./config #编译程序 make #安装程序 make install
下载并解压nginx-rtmp-model
#下载rtmp包 wget https://github.com/arut/nginx-rtmp-module/archive/master.zip #解压下载包 unzip -o master.zip #修改文件夹名 mv master nginx-rtmp-module
安装nginx
nginx wget http://nginx.org/download/nginx-1.12.2.tar.gz #解压 nignx tar -zxvf nginx-1.12.2.tar.gz #切换到nginx中 cd nginx-1.12.2 #生成配置文件,将上述下载的文件配置到configure中 ./configure --prefix=/usr/local/nginx --with-pcre=/home/pcre-8.41 --with-zlib=/home/zlib-1.2.11 --with-openssl=/home/openssl-1.0.1i --add-module=/home/nginx-rtmp-module #编译程序 make #安装程序 make install
#创建全局命令
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
#查看nginx模块 nginx -V
安装FFmpeg:
安装ffmpeg时需要提前安装yasm插件:
cd /home wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar -xvf yasm-1.3.0.tar.gz cd yasm-1.3.0/ ./configure && make && make install
开始安装ffmpeg:
cd /home wget http://www.ffmpeg.org/releases/ffmpeg-3.4.tar.gz tar -xvf ffmpeg-3.4.tar.gz cd ffmpeg-3.4/ ./configure && make && make install
编译成功后测试:
ffmpeg --help
修改nginx配置:
新建配置文件:
vi /usr/local/nginx/conf/nginx-rtmp.conf
输入内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | #user nobody; worker_processes 1; # ##error_log logs/error.log; ##error_log logs/error.log notice; ##error_log logs/error.log info; # ##pid logs/nginx.pid; # # events { worker_connections 1024; } #RTMP閰嶇疆 rtmp{ server{ listen 1935; application myapp{ live on; } application hls{ live on; hls on; hls_path /tmp/hls ; } } } # http { include mime.types; default_type application /octet-stream ; # ##log_format main '$remote_addr - $remote_user [$time_local] "$request" ' ## '$status $body_bytes_sent "$http_referer" ' ## '"$http_user_agent" "$http_x_forwarded_for"'; # access_log logs /access .log; # sendfile on; ##tcp_nopush on; # ##keepalive_timeout 0; keepalive_timeout 65; # gzip on; #include /usr/local/nginx/conf.d/*.conf; server { listen 80; server_name localhost; # ##charset koi8-r; # ##access_log logs/host.access.log main; # location / { root html; index index.html index.htm; } location /hls { types{ application /vnd .apple.mpegurl m3u8; video /mp2t ts; } root /tmp ; add_header Cache-Control no-cache; } ##error_page 404 /404.html; # ## redirect server error pages to the static page /50x.html ## error_page 500 502 503 504 /50x .html; location = /50x .html { root html; } } } # ## proxy the PHP scripts to Apache listening on 127.0.0.1:80 ## ##location ~ \.php$ { ## proxy_pass http://127.0.0.1; ##} # ## pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 ## ##location ~ \.php$ { ## root html; ## fastcgi_pass 127.0.0.1:9000; ## fastcgi_index index.php; ## fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; ## include fastcgi_params; ##} # ## deny access to .htaccess files, if Apache's document root ## concurs with nginx's one ## ##location ~ /\.ht { ## deny all; ##} # # ## another virtual host using mix of IP-, name-, and port-based configurati ##error_page 404 /404.html; # ## redirect server error pages to the static page /50x.html ## |
执行nginx
/usr/local/nginx/sbin/nginx
关闭防火墙
systemctl stop firewalld systemctl disable firewalld
测试功能
ffmpeg -re -i 123.mp4 -vcodec copy -codec copy -f flv rtmp://你的ip/hls/cctv
测试访问
视频切片保存位置:/tmp/hls/ m3u8视频访问地址:http://你的ip/hls/cctv.m3u8
重启nginx
/usr/local/nginx/sbin/nginx -s reload
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)