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

相关文章

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

SpringBoot使用ffmpeg实现视频压缩

《SpringBoot使用ffmpeg实现视频压缩》FFmpeg是一个开源的跨平台多媒体处理工具集,用于录制,转换,编辑和流式传输音频和视频,本文将使用ffmpeg实现视频压缩功能,有需要的可以参考... 目录核心功能1.格式转换2.编解码3.音视频处理4.流媒体支持5.滤镜(Filter)安装配置linu