ffmpeg + nginx 实现rtsp视频流转m3u8视频流,转码推流(linux)

FFmpeg即是一款音视频编解码工具,同时也是一组音视频编码开发套件,作为编码开发套件,它为开发者提供了丰富的音视频处理的调用接口。

FFmpeg提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种多彩格式转换、多种采样率转换、多种码率转换等;FFmpeg框架提供了多种丰富的插件模块,包含封装与解封装的插件、编码与解码的插件等。同时也可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。

ffmpeg官网

文章目录

    • 一、下载安装FFmpeg
    • 二、 安装nginx
    • 三、开始转码

一、下载安装FFmpeg

  1. 下载(自定义版本:http://www.ffmpeg.org/releases/)

wget http://www.ffmpeg.org/releases/ffmpeg-5.1.tar.gz

  1. 解压

tar -zxvf ffmpeg-5.1.tar.gz

  1. 编译安装(耗时较长)
    /home/ffmpeg为自己指定的安装目录

cd ffmpeg-5.1
./configure --prefix=/home/ffmpeg
make && make install

  1. 配置环境变量(方便在任意地方使用)

vi /etc/profile

在最后PATH添加环境变量:

export PATH=$PATH:$JAVA_HOME/bin:/home/ffmpeg/bin

source /ect/profile

在这里插入图片描述

  1. 验证是否正确安装

ffmpeg -version
在这里插入图片描述

二、 安装nginx

1.安装依赖

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

  1. 下载编译安装
# 下载  wget http://nginx.org/download/nginx-1.21.5.tar.gz# 解压缩
tar -zxvf nginx-1.21.5.tar.gz
cd nginx-1.21.5/# 执行配置并加载ssl模块
./configure --prefix=/usr/local/nginx --with-http_ssl_module# 编译安装(默认安装在/usr/local/nginx)
make
make install
  1. 启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf# 进入:/usr/local/nginx/sbin
1 启动 ./nginx  
2 停止 ./nginx -s stop
3 重启 ./nginx -s reload

4.配置nginx(外网服务器记得开端口号,并重启nginx与防火墙)

   	server {listen       82;location / {types{application/vnd.apple.mpegurl m3u8;video/mp2t ts;}root /home/ffmpeg/video/; #root后的路径改为转码后的视频文件夹路径add_header Cache-Control no-cache;add_header Access-Control-Allow-Origin *;}}

三、开始转码

nohup ffmpeg -i 替换为rtsp流地址 -c copy -y /home/ffmpeg/video/AK_PHAROS1_000003/1ZNBJ4800C006B/video.m3u8 2>/dev/null 2>&1 &

说明:
第一处加粗地方改为你的RTSP地址,保证能正常播放(可以使用vlc工具测试)
第二处为转码之后视频流存放的位置路径
PS:该命令为后台运行,如果要前台运行去掉开头的nohup 和末尾的 2>/dev/null 2>&1 &

在这里插入图片描述
在这里插入图片描述

转码成功之后的视频,通过nginx去访问,按照以上方式执行结果播放地址是:

http://IP地址:82/AK_PHAROS1_000003/1ZNBJ4800C006B/video.m3u8

在VLC里面测试下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/23785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis常见面试题

Redis面试题 1、什么是 Redis? Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中&#…

Linux内核网络参数调优命令

文章目录 ulimit -nsomaxconn Socket参数netdev_max_backlog参数tcp_max_syn_backlog参数 ulimit -n ulimit -n 是用于查看或设置当前用户进程打开文件描述符的最大值。文件描述符是操作系统用来访问文件或者其他I/O资源的一种抽象表示。在Linux和类Unix系统中,每个…

苹果电脑第三方应用程序卸载工具CleanMyMacX4.14

CleanMyMacX,这是一款可以帮助你快速识别并卸载电脑上的多个应用程序的第三方工具,省去了逐个卸载的繁琐步骤。 我们首先要到下载CleanMyMacX, CleanMyMac X全新版下载如下: https://wm.makeding.com/iclk/?zoneid49983 然后&#xff0c…

基于java数据结构学习网设计与实现

摘 要 随着计算机信息化时代的来临,教育的信息化发展也日新月异。特别是高等院校对于教育信息化的重视程度越来越高,教育信息化必须要投入大量的时间精力去开发一套管理系统,本文论述了信息化的管理手段在日常教学、考试过程中的重要性和必要…

【项目 计网2】4.4网络模型 4.5协议 4.6网络通信的过程

文章目录 4.4网络模型OSI七层参考模型TCP/IP四层模型(常用)简介四层介绍 4.5协议简介常见协议UDP协议TCP协议IP协议以太网帧协议(MAC地址封装)ARP协议(IP->MAC) 4.6网络通信的过程封装分用 4.4网络模型 …

1新手篇:熟悉 NestJS

前言 经过了需求分析以及技术选型之后,我们正式步入了第三个环节:脚手架搭建。 工欲善其事,必先利其器,NestJS 为开发者提供了很多开箱即用的功能,我们可以根据团队的需求搭建一套适配所有业务开发的基础脚手架。因此,接下来的 2 章是基础篇的教学,我将带领大家逐步学…

Stable Diffusion 硬核生存指南:WebUI 中的 GFPGAN

本篇文章聊聊 Stable Diffusion WebUI 中的核心组件,强壮的人脸图像面部画面修复模型 GFPGAN 相关的事情。 写在前面 本篇文章的主角是开源项目 TencentARC/GFPGAN,和上一篇文章《Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer》提…

k8s存储卷

目录 一、为什么要存储卷?二、emptyDir存储卷三、hostPath存储卷四、 nfs共享存储卷五、PVC 和 PV5.1 PV和PVC之间的相互作用遵循的生命周期5.2 PV 的状态5.3 一个PV从创建到销毁的具体流程 六、静态创建pv和pvc资源由pod运用过程6.1 在NFS主机上创建共享目录&#…

03 制作Ubuntu启动盘

1 软碟通 我是用软碟通制作启动盘。安装软碟通时一定要把虚拟光驱给勾选上,其余两个可以看你心情。 2 镜像文件 我使用清华镜像网站找到的Ubuntu镜像文件。 Index of /ubuntu-releases/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 请自己选择镜像…

cocosCreator 之 resources(一)

版本: v3.4.0 参考: resources资源加载 简介 项目中所有需要通过脚本动态加载的资源可以使用resources.load接口进行加载,且资源相关一定要放在assets\resources的目录或子目录下。 在assets\resources目录下的资源要注意: 如果只是依赖于…

8.1Jmeter5.1:Jmeter SSL

Jmeter配置证书请求双向认证SSL的web接口 需求:需要通过Jmeter配置证书请求双向认证SSL的web接口 提供的证书:P12格式 备注:Jmeter需要导入的证书是keystore证书 那么要先把P12转成keystore文件 1、使用p12生成keystore文件 keytool介绍 这里需要提到提到jdk自带的key…

K8S系列文章之 使用Kind部署K8S 并发布服务

简单介绍 kind 即 Kubernetes In Docker,顾名思义,就是将 k8s 所需要的所有组件,全部部署在一个docker容器中,是一套开箱即用的 k8s 环境搭建方案。使用 kind 搭建的集群无法在生产中使用,但是如果你只是想在本地简单…

网络安全 Day13-Linux三剑客awk知识

Linux三剑客awk知识 1. awk 介绍2. awk 语法3. 练习 1. awk 介绍 awk 是一门语言, 也是一个命令,Linux 有三剑客命令: grep/sed/awk三剑客的特长 grep 过滤内容sed 取行awk 取列 2. awk 语法 取列 取第一列文件($1): awk {print $1} 文件指定分隔符为文件: awk -F "指…

队列中offer,add;poll,remove;peek,element之间的区别

offer和add的区别 offer() 和 add() 都是向队列中加入新项。 一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。 这时新的offer方法就可以起作用了。它不是对调用add()方法抛出一个unchecked异常,而只是得…

查看linux 所有运行的应用和端口命令

要查看 Linux 中所有运行的应用程序及其对应的端口,可以使用以下命令: 1. 使用 netstat 命令(已被弃用,建议使用 ss 命令): netstat -tuln 这会显示当前系统上所有打开的网络连接和监听的端口。其中&#…

初阶C语言——特别详细地介绍函数

系列文章目录 第一章 “C“浒传——初识C语言(更适合初学者体质哦!) 第二章 详细认识分支语句和循环语句以及他们的易错点 第三章 初阶C语言——特别详细地介绍函数 目录 系列文章目录 前言 一、函数是个什么鬼东西? 二、C语…

企业级Vue路由角色权限应该怎么做?

角色权限 角色权限,简单来说就是登录的用户能看到系统的哪些页面,不能看到系统的哪些页面。一般是后台管理系统才会涉及到如此复杂的角色权限。 对于 vue 技术栈,实现角色权限一般有两种方式。 第一种是利用 beforeEach 全局前置守卫。 第…

css中的bfc是什么?

什么bfc? BFC(Block Formatting Context)块级 格式化 上下文。 BFC就是页面上的一个隔离的独立盒子,容器里面的子元素和外面的元素不会相互影响。 为什么要bfc? bfc是我们去主动触发的,并不是自动就存在的,它是帮助我们解决cs…

【雕爷学编程】MicroPython动手做(28)——物联网之Yeelight 2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

数据库与数据仓库的区别及关系

数据库与数据仓库的区别及关系 数据库数据仓库异同差异联系例子 数据库 数据库是结构化信息或数据的有序集合,一般以电子形式存储在计算机系统中。通常由数据库管理系统 (DBMS) 来控制。它是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集…