基于nginx和ffmpeg搭建HTTP FLV流媒体服务器

一、简介

整体是使用nginx搭建HTTP FLV流媒体服务器:

流程:音视频->rtmp->http-flv

音视频转为rtmp需要借助ffmpeg转化。

rtmp转为http-flv需要借助nginx转化。

nginx-http-flv-module是基于nginx-rtmp-module开发的,包含nginx-rtmp-module所有功能,因此不能nginx-rtmp-module同时安装,其编译安装步骤与nginx-rtmp-module类似

名称 参考链接 描述
ffmpeg软件包下载地址 RPM Fusion - RPM Fusion

二、操作步骤

1. 修改配置支持HTTP FLV

在/etc/nginx/nginx.conf配置文件中增加以下内容

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| #与http模块同级 rtmp { server { listen 1935; chunk_size 4096; application myapp { live on; meta off;#为了兼容flvj.js hls on; hls_path /tmp/hls; hls_fragment 4; hls_playlist_length 30; record off; allow play all; } }   # 第N个转流地址 server { listen xxxx; #监听的端口号 application xxxx { #自定义的名字 live on; } } } http { include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } location /hls{ add_header Access-Control-Allow-Origin *; types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } alias /tmp/hls; expires -1; } location /flv { flv_live on; chunked_transfer_encoding on; #支持'Transfer-Encoding: chunked'方式回复 add_header 'Access-Control-Allow-Origin' '*'; #添加额外的 HTTP 头 add_header 'Access-Control-Allow-Credentials' 'true'; #添加额外的 HTTP 头 } } } |

2. 安装ffmpeg

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm #查看ffmpeg版本 ffmpeg -version |

3. 启用ffmpeg进行推流

以下命令需要修改rtsp流地址,rtmp地址以服务器实际配置为准,其他命令暂时复制即可。

-rtsp_transport tcp 是将默认的udp协议转为tcp协议,可以一定程度上解决花屏(丢包)的问题。

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # 命令 ffmpeg -rtsp_transport tcp -i [rtsp流地址] flv -r 25 -s 1920*1080 -an [转换后的rtmp流地址] # 音视频转码为rtmp流 ffmpeg -re -i input_file.mp4 -c copy -f flv rtmp://server_url/stream_key # 实例 ffmpeg -rtsp_transport tcp -i rtsp://admin:123456@192.168.00.00 -f flv -r 25 -s 1920*1080 -an rtmp://localhost:1935/hik01/ # 后台运行,在命令前加nohup,后加 & nohup ffmpeg -rtsp_transport tcp -i rtsp://admin:123456@192.168.00.00 -f flv -r 25 -s 1920*1080 -an rtmp://localhost:1935/hik01/ & |

4. 验证flv流是否可用

用VLC播放如下串流:http://10.45.12.29/flv?port=1935&app=myapp&stream=mystream,验证HTTP FLV是否能播放成功

测试是否可以打开播放视频

相关推荐
life码农10 小时前
Nginx 配置允许指定 IP 段访问:从 192.168.1.1 到 192.168.1.124 及 /24 详解
网络·tcp/ip·nginx
可乐鸡翅yeah_12 小时前
AES‑128 加密 M3U8,IV 初始化向量新手容易踩坑
前端·网络·数据库·ffmpeg·音视频·m3u8在线
吴声子夜歌12 小时前
Nginx应用与运维——Nginx编译及部署(部署)
java·运维·nginx
Wang's Blog13 小时前
Java 项目实战: 外卖平台优化-Nginx目录结构与conf配置文件体系
java·nginx
XS03010614 小时前
Nginx 学习指南
运维·nginx
吴声子夜歌15 小时前
Nginx应用与运维——Nginx代理服务应用实战(TCP/UDP代理)
运维·tcp/ip·nginx
吴声子夜歌15 小时前
Nginx应用与运维——Nginx缓存服务应用实战(一)
运维·nginx·缓存
勇往直前plus16 小时前
HTTPS 详解
网络协议·http·https
wechatbot88817 小时前
企业微信HTTP协议接口完整接入教程|全量消息收发 API 实战
网络协议·http·微信·企业微信·ai编程
web打印社区17 小时前
Lodop 提示未安装或请升级:Chrome 里先分清该装哪套
开发语言·前端·javascript·chrome·websocket·http