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

2024-09-06 17:44

本文主要是介绍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"

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

这篇关于ffmpeg安装测试(支持cuda支持SRT)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142686

相关文章

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

基于Java和FFmpeg实现视频压缩和剪辑功能

《基于Java和FFmpeg实现视频压缩和剪辑功能》在视频处理开发中,压缩和剪辑是常见的需求,本文将介绍如何使用Java结合FFmpeg实现视频压缩和剪辑功能,同时去除数据库操作,仅专注于视频处理,需... 目录引言1. 环境准备1.1 项目依赖1.2 安装 FFmpeg2. 视频压缩功能实现2.1 主要功

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方