Linux下如何用nginx+ffmpeg搭建流媒体服务器
off999 2025-01-14 16:24 33 浏览 0 评论
安装ffmpeg
安装过程略
安装完成后,检查是否安装成功。比如我这里采用向pili推流的方式,将本地的一个mp4视频推流到七牛pili。
ffmpeg -re -i /tmp/ffmpeg_test.mp4 -vcodec copy -acodec copy -f flv "rtmp://pili-publish.qingkang.echohu.top/qingkang/stream1?key=***"
安装nginx
安装过程略
需要注意的是:一定要添加nginx-rtmp-module模块
git clone https://github.com/arut/nginx-rtmp-module.git
#编译的时候添加nginx-rtmp-module模块
--add-module=path_of_/nginx-rtmp-module
我的nginx编译参数
./configure --prefix=/opt/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre=/opt/software/pcre-8.35 --with-zlib=/opt/software/zlib-1.2.8 --with-openssl=/opt/software/openssl-1.0.1i --add-module=/opt/software/nginx-1.8.1/modules/nginx-rtmp-module
修改nginx配置文件nginx.conf
加入rtmp配置
#切换自动推送(多 worker 直播流)模式。默认为 off
rtmp_auto_push on;
#当 worker 被干掉时设置自动推送连接超时时间。默认为 100 毫秒
rtmp_auto_push_reconnect 1s;
rtmp {
server {
listen 1935;
#直播流配置
application myapp {
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
application qiniu {
live on;
push 推流地址;
}
application pull {
live on;
pull 拉流地址;
}
#rtmp日志设置
access_log logs/rtmp_access.log ;
}
}
在http中增加一个location配置支持hls
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
完整的nginx.conf如下
#user nobody;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
#切换自动推送(多 worker 直播流)模式。默认为 off
rtmp_auto_push on;
#当 worker 被干掉时设置自动推送连接超时时间。默认为 100 毫秒
rtmp_auto_push_reconnect 1s;
rtmp {
server {
listen 1935;
#直播流配置
application myapp {
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
application qiniu {
live on;
push 推流地址;
}
application pull {
live on;
pull 拉流地址;
}
#rtmp日志设置
access_log logs/rtmp_access.log ;
}
}
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 main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root /opt/www/html;
index index.html index.htm;
}
#rtmp状态页面
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /opt/software/nginx-rtmp-module/;
}
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;
}
}
include vhosts/*.conf;
}
这是一个最简单,最基础的配置, rtmp监听1935端口,如果是hls的话用hls on开启hls,并且为hls设置一个临时文件目录hls_path /tmp/hls; 其它更高级的配置可以参看nginx-rtmp-module的readme,里面有比较详细的介绍其它的配置,并且它还提供了一个通过JWPlayer在网页上播放的例子.
重启nginx
nginx -t
nginx -s reload
查看nginx已经监听1935端口
使用ffmpeg推流到nginx
推一个本地的mp4到上面配置的myapp上:
ffmpeg -re -i /tmp/ffmpeg_test.mp4 -vcodec copy -acodec copy -f flv "rtmp://127.0.0.1:1935/myapp/test1"
流播放地址为(10.0.0.6是我本地的IP):rtmp://10.0.0.6:1935/myapp/test1
推一个本地的mp4到hls上
ffmpeg -re -i /tmp/ffmpeg_test.mp4 -vcodec copy -acodec copy -f flv "rtmp://127.0.0.1:1935/hls/test2"
流播放地址为: http://10.0.0.6/hls/test2.m3u8
流媒体播放器:
VLC播放hls流:
需要C/C++ Linux服务器开发学习资料私信“资料”(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费分享
相关推荐
- 电脑桌面图标不见了怎么设置
-
方法一:1、首先按下快捷键“ctrl+shift+esc”打开任务管理器。2、然后点击左上角的文件,选择“运行新任务”。3、输入“explorer.exe”点击确定等待重启即可。方法二:1...
- 惠普暗影精灵7(惠普暗影精灵7配置)
-
惠普暗影精灵7的开机步骤如下:1.确保电源已连接并正常工作。将电源适配器插入电源插座,并连接到电脑上。2.打开电脑上的盖子。通常情况下,你需要打开盖子才能看到电源按钮。3.查找电源按钮。在大多数...
- 笔记本电脑开不了机怎么办如何解决
-
1、如果笔记本无法开机首先尝试调亮电脑屏幕亮度。2、开机按F2键,进入BIOS界面查看是否正常显示。3、外接显示器,按组合键切换显示。4、移除所有外接装置,取出加装的内存或其它硬件后再开机确认。如果以...
- 如何禁止电脑自动更新(怎么禁止电脑自动更新)
-
建议将自动更新关闭,用软件更新,自己的时间自己做主。下载超级兔子,让她帮助你下载补丁。你选择快速检测后,按安装按钮,她会自动帮助你下载安装,并且不需要重启。到目前为止,使用超级兔子打补丁全部成功(对于...
- 如何重装系统win7视频教程(如何重装系统win7具体步骤)
-
不需要重装知识点延伸,更换CPU-BIOS设置1)未更改过bios设置,确认主板支持cpu型号直接插上即可,bios会自适应2)之前更改过bios设置,在更换cpu之前应需要将bios恢复出厂...
- 惠普售后维修官网电话(惠普官网维修中心电话)
-
要找到惠普的售后服务,你可以通过以下几种方式进行联系。首先,你可以访问惠普的官方网站,在网站上找到售后服务的相关信息,包括联系电话和在线支持。其次,你可以拨打惠普的客户服务热线,向客服人员咨询并安排售...
- 笔记本迈克菲怎么卸载(笔记本迈克菲怎么卸载不了)
-
戴尔笔记本电脑上的迈克菲中心可以卸载,迈克菲中心为一款杀毒软件,如果自身笔记本电脑不需要可以进行卸载。迈克菲中心卸载步骤:1、打开桌面“此电脑”。2、在“此电脑”界面中点击选择“卸载或更改程序”。3、...
- windows10怎么进入修复模式(win10如何进入修复系统)
-
1、 进入WindowsRE恢复模式。非正常启动三次,可进入WindowsRE恢复模式。具体操作方法如下:按住电源按钮10秒钟以关闭设备。再次按电源按钮以打开设备。看到Windo...
- 现在哪个浏览器好用(现在哪种浏览器好用)
-
一、谷歌浏览器谷歌浏览器是公认最好用的,这个可以从市场占有率看出端倪,超过三分之二的用户使用谷歌浏览器。Chrome浏览器以简洁快速著称,不管是普通用户还是开发人员,chrome浏览器都是首选。Chr...
- win10系统还是win7系统好(是win10好还是win7好)
-
就我个人觉得win7系统和win10系统都挺好用的,主要看个人习惯,win10系统也推出了3年了,相信很多用户也已经尝试过win10系统,操作上没有什么很大的区别,就是界面有些不同,这就看个人喜欢了。...
- 重装系统u盘制作教程(重装系统u盘怎么制作)
-
以下是重装电脑系统的一般步骤:在正常可用的电脑上下载并安装一个制作启动U盘的工具,例如Rufus、WinToUSB等。使用该工具将操作系统安装文件写入U盘,并设置U盘为启动盘。将U盘插入需要重装系统的...
- 从win8装回win7系统(win8.1怎么装回win7)
-
重装电脑,而且您的【电脑系统没有完全崩溃】,那么可以用【【【硬盘安装系统的方法】】】来装系统,无需借助光盘或者u盘,简单快速。电脑硬盘安装系统的方法如下:1.到WIN7旗舰版基地去http://ww...
- 查看电脑硬件信息的4个技巧
-
1、点击下面任务栏中的windows图标或按键盘windows键打开开始菜单。2、在开始菜单中找到设置或settings,通常是右上角的齿轮按钮。3、然后在设置界面中找到system选项,点击进入。4...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
