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

server/2024/12/15 21:39:04/

一、简介

整体是使用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.jshls 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是否能播放成功

https://i-blog.csdnimg.cn/direct/858962c401f14f6fba596162e04fd1b3.png" width="715" />

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

https://i-blog.csdnimg.cn/direct/19b2051fa7b248a7aa94137095f5e472.png" width="666" />


http://www.ppmy.cn/server/150448.html

相关文章

Responder:功能强大的安全工具介绍

一、概述 定义与定位 Responder 是一款专为渗透测试人员和安全研究人员设计的工具。它专注于在网络环境中处理各种协议的响应,旨在帮助检测和利用网络中的潜在安全漏洞,尤其是与身份验证和网络服务相关的漏洞。主要运行在基于 Windows 和 Linux 的操作系…

基于Vue3的组件封装技巧分享

1、需求说明 需求背景:日常开发中,我们经常会使用一些UI组件库诸如and design vue、element plus等辅助开发,提升效率。有时我们需要进行个性化封装,以满足在项目中大量使用的需求。 错误示范:基于a-modal封装一个自定…

webstorm开发uniapp(从安装到项目运行)

1、下载uniapp插件 下载连接:Uniapp Tool - IntelliJ IDEs Plugin | Marketplace (结合自己的webstorm版本下载,不然解析不了) 将下载到的zip文件防在webstorm安装路径下,本文的地址为: 2、安装uniapp插…

Spring Boot集成Knife4j文档工具

Knife4j 搭建 Knife4j环境的的搭建和Swagger一样都比较简单,只需要极简的配置即可。 maven依赖 我使用的是较高版本的基于openapi规范的依赖包,OpenAPI2(Swagger)规范是Knife4j之前一直提供支持的版本,底层依赖框架为Springfox。 此次在4…

DETR: End-to-End Object Detection with Transformers论文学习

论文地址:https://arxiv.org/pdf/2005.12872 代码地址:https://github.com/facebookresearch/detr 相关学习视频:https://space.bilibili.com/94779326/lists?sid1531941 标题前言: DETR 是 Facebook 团队于 2020 年提出的基于…

控制反转IoC

什么是控制反转? 控制反转:IoC(Inversion of Control),是一种编程思想。或者叫做一种新型的设计模式。由于出现的比较新,没有被纳入GoF23种设计模式范围内。 反转是什么呢? 反转的是两件事&a…

呼叫中心大模型呼入机器人详解(转)

呼叫中心大模型呼入机器人详解(转) 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 呼叫中心大模型呼入机器人是一种基于大规模深度学习模型构建的智能化系统,它能够处理海量数据并学习其中的规律&…

开源分布式系统追踪-01-Zipkin-01-入门介绍

分布式跟踪系列 CAT cat monitor 分布式监控 CAT-是什么? cat monitor-02-分布式监控 CAT埋点 cat monitor-03-深度剖析开源分布式监控CAT cat monitor-04-cat 服务端部署实战 cat monitor-05-cat 客户端集成实战 cat monitor-06-cat 消息存储 skywalking …