ffmpeg最简单方式支持nvidia硬编解码

2023-11-18

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

因为工作内容的需要,之前写过一篇文章关于ffmpeg支持英伟达的硬编解码,那个方法比较适合定制化的ffmpeg编译,如果你仅仅使用ffmpeg进行硬件编解码的话,其实不需要这么麻烦。
ffmpeg定制化编译支持cuda编解码


一、nvidia硬编解码是什么?

这个之前的文章已经说过,这里不再多做叙述。可以理解为一种专门的硬件,处理视频解码和编码。

二、使用步骤

首先你需要一张nvidia的卡,最好是GTX以上级别的,因为有些显卡没有硬件编解码器,比如GT920M这种早期笔记本显卡。

AV1在RTX30系列显卡上获得了硬件支持,因为手上没有30系显卡,所以今天只说H264和H265。

今天的比较简单,得益于ffmpeg-3.4功能,让我们在不用编译的情况下就可以直接安装这个版本。

1.安装

确保你的分发版默认的ffmpeg版本支持3.4以上的版本,Ubuntu需要>=18.04,Debian需要>=9。其他的分发版请自行查看。

安装方法也比较简单,使用官方源安装即可。
Ubuntu&Debian:

sudo apt update
sudo apt install ffmpeg

2.确认

确认需要用到两个options,一个是-decoders,一个是-encoders

这里输出太长了,我只截取一部分。

1.硬件解码器

ffmpeg -decoders
 V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)
 VFS..D hap                  Vidvox Hap
 VFS..D hevc                 HEVC (High Efficiency Video Coding)
 V..... hevc_v4l2m2m         V4L2 mem2mem HEVC decoder wrapper (codec hevc)
 V..... hevc_cuvid           Nvidia CUVID HEVC decoder (codec hevc)
 V....D hnm4video            HNM 4 video
 V....D hq_hqa               Canopus HQ/HQA
 VFS..D hqx                  Canopus HQX
 VF..BD huffyuv              Huffyuv / HuffYUV
 VF..BD hymt                 HuffYUV MT
 V....D idcinvideo           id Quake II CIN video (codec idcin)
 V....D idf                  iCEDraw text
 V....D iff                  IFF ACBM/ANIM/DEEP/ILBM/PBM/RGB8/RGBN (codec iff_ilbm)
 V....D imm4                 Infinity IMM4
 V....D indeo2               Intel Indeo 2
 V....D indeo3               Intel Indeo 3
 V....D indeo4               Intel Indeo Video Interactive 4
 V....D indeo5               Intel Indeo Video Interactive 5
 V....D interplayvideo       Interplay MVE video
 VFS..D jpeg2000             JPEG 2000
 VF...D libopenjpeg          OpenJPEG JPEG 2000 (codec jpeg2000)
 V....D jpegls               JPEG-LS
 V....D jv                   Bitmap Brothers JV video
 V....D kgv1                 Kega Game Video
 V....D kmvc                 Karl Morton's video codec
 VF...D lagarith             Lagarith lossless
 V....D loco                 LOCO
 V....D lscr                 LEAD Screen Capture
 V....D m101                 Matrox Uncompressed SD
 V....D eamad                Electronic Arts Madcow Video (codec mad)
 VFS..D magicyuv             MagicYUV video
 VF...D mdec                 Sony PlayStation MDEC (Motion DECoder)
 VF...D mimic                Mimic
 V....D mjpeg                MJPEG (Motion JPEG)
 V..... mjpeg_cuvid          Nvidia CUVID MJPEG decoder (codec mjpeg)
 V....D mjpegb               Apple MJPEG-B
 V....D mmvideo              American Laser Games MM Video
 V....D motionpixels         Motion Pixels video
 V.S.BD mpeg1video           MPEG-1 video
 V..... mpeg1_v4l2m2m        V4L2 mem2mem MPEG1 decoder wrapper (codec mpeg1video)
 V..... mpeg1_cuvid          Nvidia CUVID MPEG1VIDEO decoder (codec mpeg1video)
 V.S.BD mpeg2video           MPEG-2 video
 V.S.BD mpegvideo            MPEG-1 video (codec mpeg2video)
 V..... mpeg2_v4l2m2m        V4L2 mem2mem MPEG2 decoder wrapper (codec mpeg2video)
 V..... mpeg2_cuvid          Nvidia CUVID MPEG2VIDEO decoder (codec mpeg2video)
 VF..BD mpeg4                MPEG-4 part 2
 V..... mpeg4_v4l2m2m        V4L2 mem2mem MPEG4 decoder wrapper (codec mpeg4)
 V..... mpeg4_cuvid          Nvidia CUVID MPEG4 decoder (codec mpeg4)

所有支持的解码器中后缀带_cuvid的都是英伟达的硬件解码格式,按照自己的需要选择。

2.硬件编码器

一般硬件差不多都是解码能力强过编码能力,英伟达也不例外,可能支持的编码格式没有解码那么多。

ffmpeg -encoders
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... h264_omx             OpenMAX IL H.264 video encoder (codec h264)
 V..... h264_v4l2m2m         V4L2 mem2mem H.264 encoder wrapper (codec h264)
 V..... h264_vaapi           H.264/AVC (VAAPI) (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... hap                  Vidvox Hap
 V..... libx265              libx265 H.265 / HEVC (codec hevc)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)

后缀或前缀带nvenc的都是硬件编码器,我的显卡只支持h264和hevc,也就是俗称的H264和H265,只是不同的组织叫法不一样。

3.测试

测试也很简单,只要使用h264解码+h265编码就行了,正常的话不会报错。

ffmpeg -rtsp_transport tcp -vcodec h264_cuvid -an -i <H264视频文件> -vcodec hevc_nvenc -an -t 100 -f mp4 -y output.mp4

特别说明:-an的意思是不要音频,因为只测试视频,要不然还要单独指定音频编码器

也可以用H265文件解码+H264文件编码,你需要把操作反过来。


总结

1、同时需要ffmpeg和nvidia的支持,不同的版本可能效果不一样。
2、也有可能ffmpeg早期版本就已经支持nvidia了,只不过我用的最低Ubuntu版本是18.04,所以没法确认。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ffmpeg最简单方式支持nvidia硬编解码 的相关文章

随机推荐

  • java内存工具VisualVM的简单使用以及与Idea集成

    一 idea集成 1 打开设置 windows File gt Setting MacOS Intelij Idea gt Preferences 1 2 打开插件仓库 Plugins gt Browers Repositrories 在这
  • SPI总线协议概述

    一 概述 SPI serial peripheral interface 是一种同步串行通信协议 由一个主设备和一个或多个从设备组成 主设备启动与从设备的同步通信 从而完成数据的交换 SPI是一种高速全双工同步通信总线 标准的SPI仅仅使用
  • 【Python】一个矩阵根据某一列选择大于或小于范围的数据

    data all data all data all 3 gt 54201 data all data all data all 3 lt 54220 上面就是根据数据的第3列 选取54201到54220的范围的数据
  • AD20的元件库及加载(一)

    开始时我们画的是元器件 元器件在后缀名为 的文件里画 以画电容为例 上图就是结果 画着简单 过程能学会很多 小伙伴们可能刚刚接触 不知道在哪找线 选择元器件不放 按住鼠标左键 并按下空格 即可旋转元器件的角度 每次旋转90度 电阻的两边的四
  • 福到了(15 分)

    L1 6 福到了 15 分 福 字倒着贴 寓意 福到 不论到底算不算民俗 本题且请你编写程序 把各种汉字倒过来输出 这里要处理的每个汉字是由一个 N N 的网格组成的 网格中的元素或者为字符 或者为空格 而倒过来的汉字所用的字符由裁判指定
  • 软件测试基础内容学习(二)之边界值分析法

    对限定边界规则设计测试点 边界值分析法 说明 1 边界范围节点 2 应用设计步骤 3 案例 4 适用场景 边界范围节点 选取正好等于 上点 刚好大于 刚好小于 离点 边界的值作为测试数据 内点 一般取最中间的点 在范围内的点 应用设计步骤
  • Python deque的用法介绍

    Python deque的用法介绍 deque 是Python标准库 collections 中的一个类 实现了两端都可以操作的队列 相当于双端队列 与Python的基本数据类型列表很相似 Python实现双端队列参考 https blog
  • JVM 一. 字节码与数据类型相关

    目录 一 字节码 数据类型相关 一 字节码 数据类型相关 字节码文件是跨平台的吗 是的 java虚拟机主要识别字节码文件 其实现在的java虚拟机已经不是单纯的java的 只要语言满足虚拟机的规范 都可以在这个虚拟机上运行 class文件中
  • 一、Kubernetes系列之介绍篇

    Kubernetes介绍 1 背景介绍 云计算飞速发展 IaaS PaaS SaaS Docker技术突飞猛进 一次构建 到处运行 容器的快速轻量 完整的生态环境 2 什么是kubernetes 首先 他是一个 全新的基于容器技术的分布式架
  • 微信回调模式配置企业服务器URL

    转载请标明出处 尊重他人劳动成果 谢谢 前几天微信推出了企业号 我就进去关注了一下 发现用途大大的多 就顺手整了一个测试号来试试 由于是新出的玩意儿 很多东西有文档也不到一定知道整 我这个配置就花了蛮久才找到失败的原因 最终是借用了浩然哥的
  • STL——queue模板类常见函数

    include
  • 【Python数据分析】Pandas按行遍历Dataframe

    Pandas按行遍历Dataframe的方法主要有两种 iterrows 和itertuples 具体用法如下 构建数据集 import pandas as pd import numpy as np N 20 dataset pd Dat
  • 08C++11多线程编程之unique_lock类模板

    08C 11多线程编程之unique lock类模板 前述 如果看懂了该篇文章 你对unique lock可以说随便使用 并且可以只看第5点的总结即可 1 unique lock概念 当不加参数时 和lock guard一样能自动上锁解锁
  • Unity 实现选框选中物体

    最近在看RTS游戏视频注意到了选框功能 就尝试做了一下 功能实现 脚本挂载到Camera上 要不然OnPostRender 函数无法调用 rectMat新建一个材质球 设置成默认的Sprites就可以了 using System Colle
  • Vue的安装和部署

    1 下载安装node js 官网下载地址 https nodejs org en 如果C盘较小 可以自定义安装到其他盘 解压完的目录如下 2 node v npm v 能看到版本号说明安装成功 3 在安装目录下 创建全局安装目录 node
  • Sqlite进阶之--附加数据库关联查询以及Pragma的相关使用

    数据库连接 基本的 Data Source c mydb db Version 3 此类库不支持版本 2 内存数据库 Data Source memory Version 3 New True SQLite 数据库通常存储在磁盘上 但数据库
  • 元组学习python复习资料

    a 第0个 2 3 d 倒1 1 倒1 2 这里我们区分好命名各元祖 1为第0个元祖 2为第1个元祖 csharp 再介绍一下元祖的概念 数据结构在python中包含 元祖 列表和字典 特点1 元祖一旦被创建不能被修改 a 第0个 2 3
  • 简洁直观的飞行器数学模型推导

    运动学方程 动力学方程 值得注意的是 对于非定轴和定轴转动 h r
  • HDOJ 7328 Snake —— 2023“钉耙编程”中国大学生算法设计超级联赛(5)(2023杭电多校第五场)

    题目链接 简要题意 题目相当于求 n n n个人排成 m m m个队伍 队伍内部有序 队伍之间无序 最长的长度不超过 k
  • ffmpeg最简单方式支持nvidia硬编解码

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 nvidia硬编解码是什么 二 使用步骤 1 安装 2 确认 1 硬件解码器 2 硬件编码器 3 测试 总结 前言 因为工作内容的需要 之前写过一篇文章关