安装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编译参数
#编译的时候添加nginx-rtmp-module模块
--add-module=path_of_/nginx-rtmp-module
./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在http中增加一个location配置支持hls
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 推流地址;
}
【Linux下如何用nginx+ffmpeg搭建流媒体服务器】application pull {
live on;
pull 拉流地址;
}
#rtmp日志设置
access_log logs/rtmp_access.log ;
}
}
location /hls {完整的nginx.conf如下
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
#user nobody;这是一个最简单,最基础的配置, rtmp监听1935端口,如果是hls的话用hls on开启hls,并且为hls设置一个临时文件目录hls_path /tmp/hls; 其它更高级的配置可以参看nginx-rtmp-module的readme,里面有比较详细的介绍其它的配置,并且它还提供了一个通过JWPlayer在网页上播放的例子.
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;
}
重启nginx
nginx -t查看nginx已经监听1935端口
nginx -s reload
文章插图
使用ffmpeg推流到nginx推一个本地的mp4到上面配置的myapp上:
推荐阅读
- 只会用chmod 777?Linux下的文件权限居然还有这么多骚操作
- Linux文件与目录管理 目录存放着Linux的源代码
- 为什么黑客都用Linux系统?原来是这四大原因
- ssh-add linux Permission 0644 for are too open 错误解决方案
- 教你如何用 openresty 完美替换 nginx
- Deepin-linux操作系统下的tex文件的常用的编辑器介绍和安装
- linux下的一些好用的软件
- 工作中必须掌握的 10 条 Linux 命令
- 从操作系统层面理解Linux下的网络IO模型,这么讲你还不懂?
- 如何在 Linux 系统中输入 emoji