使用NVIDIA GPU FFmpeg转码 YUV to H264(成功)

news/2024/7/10 20:45:40 标签: ffmpeg, linux, 视频编解码, h.264

0. 官方教程

NVIDIA官方教程:链接,本篇内容主要参考2.2 Software Setup。

1. 安装显卡驱动

确保nvidia-smi能够正常使用:

2. 安装CUDA toolkit 

注意要与显卡驱动版本对应,验证toolkit是否正确安装:

3. 安装ffnvcodec

  • 下载地址
  • 编译方法:解压进入文件夹后
sudo make install
  • 验证安装
pkg-config --modversion ffnvcodec

         显示版本号证明安装成功:

4. 编译安装FFmpeg

  • 下载地址
  • 配置方法:
    • 进入ffmpeg-x.x文件夹
    • 调用./configure进行配置(注意配置正确的CUDA库路径)
./configure --enable-cuda 
            --enable-cuvid 
            --enable-nvenc 
            --enable-nonfree 
            --enable-libnpp 
            --extra-cflags=-I/usr/local/cuda/include #CUDA头文件路径
            --extra-ldflags=-L/usr/local/cuda/lib64  #CUDA lib路径
  • 多线程编译
make -j -s
  • 验证硬件加速是否启用成功
./ffmpeg -hwaccels

        左下角显示CUDA即为配置成功:

  •  安装到系统路径中
make install

5. 测试效果

可以连接YUV格式的输入设备或者使用网上下载的.yuv文件进行测试,具体可以参考如下指令:

ffmpeg  -c:v rawvideo 
        -pix_fmt yuv420p     # 输入视频格式为yuv420p
        -s <width>x<height>  # 输入视频分辨率
        -i <input_file>      # 输入视频文件路径或者设备号
        -c:v h264_nvenc      # 调用NVENC的H264编码器
        -preset fast         # 视频编码速度(影响质量)
        -b:v <bitrate>       # 设置比特率
        <output_file>        # 输出文件路径

下面用我配置好的FFmpeg进行测试:

最终保存成H.264编码的mp4文件:

6. 总结

 目前只是对FFmpeg工具的一个初步探索,具体的参数配置方面还没有深入去研究,接下来可能会去调研一下NVIDIA Video Codec SDK二次开发的内容。因为本人接触视频编码内容时间很短,了解也较为浅显,如有错误,希望指出,感谢阅读~


http://www.niftyadmin.cn/n/5135729.html

相关文章

goctl 安装步骤

goctl&#xff1a;go-zero框架强大的项目脚手架工具&#xff0c;一个简单易用的代码生成工具。 go-zero官网&#xff1a;https://go-zero.dev/ go-zero 官网上面对 goctl 的介绍&#xff1a;goctl读作go control&#xff0c;不要读成go C-T-L。goctl的意思是不要被代码控制&a…

FOXBORO P0926PA 自动化控制模块

自动化掌握模块是用于产业自动化体系中的症结组件&#xff0c;具备多种特征&#xff0c;以保证体系的稳定性、否靠性和高效性。以下是自动化掌握模块的一些主要特征&#xff1a; 多通道掌握&#xff1a; 自动化掌握模块通常否以或许掌握多个通道&#xff0c;许否同时治理多个装…

3D max软件有哪些技巧可快速选择区域?

使用3D max软件时&#xff0c;有新手朋友反馈说&#xff0c;为什么3dmax选择区域怎么改不了&#xff1f; 还有就是3dmax选择区域不显示该怎么办&#xff1f; 或者是3dmax选择区域变成圆形了。 针对以上这几类问题&#xff0c;只要掌握这几种方法就可以。小编整理了几种3D max…

项目管理中如何进行项目沟通管理

项目沟通管理是项目管理中不可或缺的一部分&#xff0c;它涉及到项目成员之间信息交流和沟通的计划、执行和控制。以下是项目沟通管理的一般步骤&#xff1a; 1、沟通规划&#xff1a;在项目规划阶段&#xff0c;需要制定沟通规划&#xff0c;即确定项目沟通的目标、对象、内容…

通过Metasploit+Ngrok穿透内网长期维持访问外网Android设备

前言: 因为之前作为小白我不会在Kali Linux里面把IP映射出外网&#xff0c;卡在那个地方很久&#xff0c;后来解决了这个问题就写方法出来和大家分享分享。 环境&#xff1a; Kali Linux系统(https://www.kali.org/downloads/) Metasploit Ngrok Linux64位的端口转发工具(htt…

tar 打包工具如何忽略一些文件或者文件夹

前言 平时我们在使用打包工具的时候都是用tar -zcvf test.tar.gz test/这个命令进行打包。 但是可能我不需要test文件夹下的test.txt文件&#xff0c;这时候就需要在打包的时候加上--exclude参数来忽略它。 实战 打包test项目文件夹&#xff0c;但是我们并不需要这个项目运行…

QTableWidget设置居中

1、正常插入数据&#xff1a; QString x "123"; QString y "234";ui->tableWidget->setItem(i, j, new QTableWidgetItem(x)); ui->tableWidget->setItem(i1, j1, new QTableWidgetItem(y)); 设置居中&#xff1a; ui->tableWidget-&g…

[UDS] --- ECUReset 0x11

1 0x11功能描述 根据ISO14119-1标准中所述&#xff0c;诊断服务11主要用于Client向Server(ECU)请求重启行为。该重启行为将会导致Server复位回归到特定的初始状态&#xff0c;具体是什么初始状态取决于Client的请求行为。 2 0x11应用场景 一般而言&#xff0c;对于11诊断服务…