ffmpeg安装测试(支持cuda支持SRT)

文章目录

  • 背景
  • 安装ffmpeg
    • 直接下载可执行文件
      • 选择版本
      • 选择对应系统版本下载
      • 测试
      • Linux下安装
    • 查看支持协议以及编码格式
  • 常见错误
    • 缺少 libmvec.so.1
    • LD_LIBRARY_PATH 错误
  • GPU加速测试
  • SRT服务器搭建
    • 下载srs5.0源码
    • 解压安装
    • 配置
    • 启动
  • SRT推流测试
  • SRT播放测试

背景

在音视频开发测试中,FFmpeg是一个不可或缺的工具,它以其强大的音视频处理能力,支持多种格式的编解码、转换、录制、流化等功能,赢得了广泛的应用。本篇将主要讲述FFmpeg的安装过程,并特别关注如何使其支持NVIDIA的CUDA加速以及SRT(Secure Reliable Transport)流处理

安装ffmpeg

官网 提供直接下载可执行文件 和 源码 两种方式

 https://ffmpeg.org/

在这里插入图片描述

直接下载可执行文件

注意 尽量别下载第三方网站上别人编译好的文件,里面可能有坑

https://ffmpeg.org/download.html#build-windows

选择版本


2个不同的编译版本 一个是gyan.dev 一个是BtbN
在这里插入图片描述

选择对应系统版本下载

FFmpeg从4.1版本开始支持SRT(Secure Reliable Transport)协议。版本选择高于4.1的

在这里插入图片描述

测试

bin下面就是可执行文件
在这里插入图片描述

Linux下安装

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

注意glibc版本
在这里插入图片描述

查看支持协议以及编码格式

支持协议

ffmpeg -protocols

在这里插入图片描述

视频编解码器
ffmpeg -codecs
./ffmpeg -encoders
音频编解码器
ffmpeg -decoders | grep -i audio

官方版本的编译参数

configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux 
--enable-gpl --enable-version3 --disable-debug 
--enable-iconv --enable-libxml2 --enable-zlib
--enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib 
--enable-amf --enable-libaom --enable-libaribb24 
--enable-avisynth --disable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass 
--enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-mbedtls --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --disable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --disable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl -lgomp' --extra-version=20230430

如果需要增加功能需要源码编译 参照下篇 ffmpeg源码编译安装

常见错误

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

缺少 libmvec.so.1

Linux(Ubuntu/CentOS) 下查看 GLIBC 版本
在这里插入图片描述
GLIBC 版本过低问题 请升级

参考
centos7GLIBC升级

LD_LIBRARY_PATH 错误

*** LD_LIBRARY_PATH shouldn't contain the current directory when
*** building glibc. Please change the environment variable

这意味着在编译 glibc(GNU C Library,GNU 的 C 语言标准库)时,你的 LD_LIBRARY_PATH 环境变量中包含了当前目录(. 或 ./),这通常是不被推荐的
LD_LIBRARY_PATH 是一个环境变量,它告诉动态链接器(如 ld.so)在哪些额外的目录中查找共享库。当编译 glibc 或其他系统级库时,包含当前目录作为搜索路径可能会导致意外的链接到不正确的库版本,或者链接到正在构建的库的不稳定版本,从而引入潜在的问题

GPU加速测试

使用GPU加速解码编码

./ffmpeg -i in.mp4 -c:v h264_nvenc -preset slow -b:v 5M output.mp4

在这里插入图片描述

参数解释:

-hwaccel cuda 启用 CUDA 硬件加速。
-c:v h264_cuvid 指定输入编解码器为使用 CUDA 加速的 H.264 解码器。
-c:v h264_nvenc 指定输出编解码器为使用 NVIDIA NVENC 的 H.264 编码器。 如果有多个gpu可以指定GPU ffmpeg -hwaccel_device cuda:0

h264_cuvid 是 NVIDIA 提供的一个 H.264 视频解码器,它利用 NVIDIA GPU 的计算能力来加速视频解码过程。
hevc_cuvid 265解码 hevc_nvenc 26编码 libx264 是一个开源 H.264 视频编码器库,完全由 CPU
执行,不依赖于 GPU 加速

SRT服务器搭建

下载srs5.0源码

https://ossrs.net/lts/zh-cn/docs/v5/doc/srt

解压安装

cd srs/trunk
./configure
make

配置

srt_server {enabled on;listen 10080;maxbw 1000000000;connect_timeout 4000;peerlatency 0;recvlatency 0;latency 0;tsbpdmode off;tlpktdrop off;sendbuf 2000000;recvbuf 2000000;
}

启动

./objs/srs -c conf/srt.conf 

在这里插入图片描述

SRT推流测试

ffmpeg -re -i in.flv -c copy -pes_payload_size 0 -f mpegts
‘srt://10.168.60.166:10080?streamid=#!::r=live/livestream,m=publish’
在这里插入图片描述
服务器日志
在这里插入图片描述

SRT播放测试

ffplay.exe "srt://10.168.60.166:10080?streamid=#!::r=live/livestream,m=request"

在这里插入图片描述
服务器日志
在这里插入图片描述

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

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

相关文章

视频监控管理平台LntonAIServer视频智能分析抖动检测算法应用场景

在视频监控系统中,视频画面的稳定性对于确保监控效果至关重要。抖动现象是指视频画面中存在不稳定或频繁晃动的情况,这可能会影响视频的清晰度和可读性。LntonAIServer通过引入抖动检测功能,帮助用户及时发现并解决视频流中的抖动问题&#x…

【Python】从基础到进阶(七):深入理解Python中的异常处理与调试技巧

🔥 个人主页:空白诗 文章目录 一、引言二、异常处理概述1. 什么是异常?2. 异常的捕获与处理 三、常见的异常类型四、自定义异常五、调试与日志记录1. 使用assert进行调试2. 使用日志记录 六、案例:文件操作与异常处理1. 需求分析2…

最新kubernetes的安装填坑之旅(新手篇)

Kubernetes(常简称为 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序,lz也不知道哪根脑经秀逗了,竟然妄挑战学习一下,结果折戟沉沙,被折腾的欲仙欲死,不过…

写的一致性问题之双删模式

文章目录 1、双删模式1.1、同步双删1.2、异步双删1.3、延时双删1.4、定时双删 在事务提交前后删除两次redis,会有性能问题 企业开发常用:延时双删、异步双删 1、双删模式 1.1、同步双删 实现思路:AOP 1.2、异步双删 在事务提交之后异步删除r…

redis群集的三种模式

目录 一、redis群集有三种模式 二、redis主从复制 2.1 概念 2.2 主从复制的作用 2.3 主从复制流程 三、搭建redis主从复制 四、redis哨兵模式 4.1 概念 4.2 哨兵模式原理: 4.3 哨兵模式的作用: 4.4 故障转移机制: 4.5 主节点的选举&#xff…

【计算机网络】电路交换、报文交换和分组交换——三种交换方式性能分析以及计算机网络的分类

【计算机网络】电路交换、电报交换、分组交换 目录 【计算机网络】电路交换、电报交换、分组交换1. 电路交换2. 电报交换3. 分组交换4. 基于分组交换~“虚电路交换”技术 【计算机网络】电路交换、报文交换和分组交换——三种交换方式性能分析电路交换性能分析报文交换性能分析…

C/C++:优选算法

一、双指针 1.1移动零 链接:283. 移动零 - 力扣(LeetCode) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操…

[001-03-007].第07节:Redis中的事务

我的后端学习大纲 我的Redis学习大纲 1、Redis事务是什么: 1.可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化, 按顺序地串行化执行而不会被其他命令插入,不许加塞2.一个队列中,一次性、…

PLSQL-将一份excel数据导入到一张物理表(Oracle)

–>> 很简单~ 平时用惯了DBeaver,突然要用PLSQL Developer,确实很生疏。 –>> 我的场景,将一份.csv文件数据手动导入到Oracle下的一张物理表中去。 研究了半天,看网上说的可以用:Tools → ODBC Importer &…

WPF 手撸插件 八 依赖注入

本文内容大量参考了:https://www.cnblogs.com/Chary/p/11351457.html 而且这篇文章总结的非常好。 1、注意想使用Autofac,Autofac是一个轻量级、‌高性能的依赖注入(‌DI)‌框架,‌主要用于.NET应用程序的组件解耦和…

被低估的SQL

SQL是现代数据库管理系统中不可或缺的一部分。尽管它的使用已十分普遍,但在数据处理领域,SQL的某些功能和潜力仍然被许多人低估。接下来,小编将与您一起,探讨SQL的一些被忽视的特性,揭示它在数据管理中的真正实力。 1.…

红海云 × 滨湖国控集团 | 数智引领集团型国企人力资源数字化变革

合肥滨湖国有资本运营控股集团有限公司(以下简称“滨湖国控集团”)为合肥市包河区区属一级国企。滨湖国控集团作为安徽省市辖行政区中首个获得AA主体信用评级的区属国企,紧扣“三区”定位,聚焦“三位”追求 ,积极构筑金…

Python OpenCV精讲系列 - 高级图像处理技术(五)

💖💖⚡️⚡️专栏:Python OpenCV精讲⚡️⚡️💖💖 本专栏聚焦于Python结合OpenCV库进行计算机视觉开发的专业教程。通过系统化的课程设计,从基础概念入手,逐步深入到图像处理、特征检测、物体识…

使用 Elastic 和 LM Studio 的 Herding Llama 3.1

作者:来自 Elastic Charles Davison, Julian Khalifa 最新的 LM Studio 0.3 更新使 Elastic 的安全 AI Assistant 能够更轻松、更快速地与 LM Studio 托管模型一起运行。在这篇博客中,Elastic 和 LM Studio 团队将向你展示如何在几分钟内开始使用。如果你…

【UE5 C++课程系列笔记】02——创建C++类的三种方式

目录 一、从UE编辑器中创建 引用头文件报错的两种解决方式 (1)方式1 (2)方式2 二、在文件夹中直接创建 三、在Visual Studio中创建 一、从UE编辑器中创建 在UE编辑器中选择“Tools-》New C Class” 这里新建的类的父类选择…

解锁阿尔茨海默病(AD)靶点密码,开启靶向治疗新篇章

前 言: 阿尔茨海默病(AD)是一种严重的神经退行性疾病,多发于高龄人群,主要表现为记忆、思维、分析判断、视空间辨认、情绪等障碍。从实验室到临床应用的过程充满挑战。阿尔茨海默症新型疗法的开发主要聚焦于靶向Aβ、…

Vue3.0项目实战(三)——大事件管理系统首页 layout 架子与文章分类的实现

目录 1. 首页 layout 架子 [element-plus 菜单] 1.1 基本架子拆解 2. 登录访问拦截 2.1 需求 2.2 vue3 和 vue2 中的 Vue-Router 区别 3. 用户基本信息获取&渲染 4. 退出功能 [element-plus 确认框] 5. 文章分类页面 - [element-plus 表格] 5.1 基本架子 - PageCo…

专业版PyCharm使用plt.show()显示图像时,如何不显示在右侧工具栏中,而是直接弹出来

解决方案 File -> Settings -> Python Plots -> 取消勾选 Show plots in tool window 示例 默认勾选 Show plots in tool window 的显示效果: 取消勾选 Show plots in tool window 的显示效果:

伙房食堂电气安全新挑战:油烟潮湿环境下,如何筑起电气火灾“防火墙”?

近几年,随着我国经济的飞速发展,食堂餐饮也经历了一场变革,越来越多的电器走进了伙房食堂中,实现了电气化,为人们提供了高效便利的饮食服务,但同时也增加了火灾负荷。目前我国非常严重的电气火灾危害&#…

使用 Parallel 类进行多线程编码(下)

2.Parallel.ForEach() 的使用 从 ForEach() 这个名字可以看出该方法是用来遍历泛型集合的,新建一个 ASP.NET Core Web应用的项目,如下: 在 Index.cshtml.cs 文件中增加一个 UserInfo.cs 的类,代码如下: public class U…