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

文章目录

背景

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

安装ffmpeg

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

css 复制代码
 https://ffmpeg.org/

直接下载可执行文件

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

css 复制代码
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

官方版本的编译参数

c 复制代码
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加速解码编码

css 复制代码
./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;
}

启动

c 复制代码
./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"

服务器日志

相关推荐
别来无恙blwy9 小时前
SQL Server高可用自动故障转移失败(短时间内多次转移失败,只需一步可处理)
数据库·windows·sqlserver·负载均衡·可用性测试
七宝大爷16 小时前
warp divergence(线程束分化)及其避免方法
cuda·wrap·线程束
感谢地心引力17 小时前
【AI】加入AI绘图的视频封面快速编辑器
人工智能·python·ai·ffmpeg·音视频·pyqt·gemini
HoKis17 小时前
Powershell 向CMD窗口发送CTRL+C(优雅结束控制台应用程序)
ffmpeg·powershell·cmd
shanks6618 小时前
FFmpeg 入门指南:多媒体处理的瑞士军刀
c语言·ffmpeg
yohalaser2 天前
追光者的“速度游戏“:光伏测试设备的技术迭代之路
人工智能·功能测试·可用性测试
扶尔魔ocy2 天前
【QT window】multimedia+ffmpeg实现(PCM和MP4)录音功能
qt·ffmpeg·pcm
BullSmall2 天前
分布式幂等性:30字讲透核心要点
可用性测试
小曾同学.com3 天前
SRT协议推拉流
ffmpeg·实时音视频·vlc·obs·srt协议·srt推拉流
小曾同学.com3 天前
NetInt 硬件编码实战转码压测
ffmpeg·netint硬件编码