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

这篇具有很好参考价值的文章主要介绍了ffmpeg最简单方式支持nvidia硬编解码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


前言

因为工作内容的需要,之前写过一篇文章关于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,所以没法确认。文章来源地址https://www.toymoban.com/news/detail-613760.html

到了这里,关于ffmpeg最简单方式支持nvidia硬编解码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nvidia jetson 平台使用 ffmpeg nvmpi 硬件编解码

    首先目前ffmpeg不支持在nvidia jetson 平台上进行使用硬件编解码加速,但是由于nvidia 提供了相对的硬件编解码加速的api,故可以将api集成到ffmpeg实现。 好在国外大神多,在github上已经有人实现了。 GitHub - jocover/jetson-ffmpeg: ffmpeg support on jetson nano 这个是实现的jetson api 的c++ 工程,

    2024年02月16日
    浏览(31)
  • Ubuntu20.04 编译 gstreamer 支持gpu硬编解 opencv-python同支持gst

    Gstreamer是一个支持Windows,Linux,Android, iOS的跨平台的多媒体框架,应用程序可以通过管道(Pipeline)的方式,将多媒体处理的各个步骤串联起来,达到预期的效果。每个步骤通过元素(Element)基于GObject对象系统通过插件(plugins)的方式实现,方便了各项功能的扩展。 下图

    2024年02月11日
    浏览(73)
  • 13、ffmpeg使用nvidia显卡对OAK深度相机进行解码和编码

    基本思想:简单使用nvidia的硬件解码进行oak相机的编码和解码学习 一、在本机rtx3060配置好显卡驱动和cuda之后进行下面操作50、ubuntu18.0420.04+CUDA11.1+cudnn11.3+TensorRT7.2/8.6+Deepsteam5.1+vulkan环境搭建和YOLO5部署_ubuntu18.04安装vulkan_sxj731533730的博客-CSDN博客 二、配置环境和编译库

    2024年02月16日
    浏览(29)
  • opencv、ffmpeg使用nvidia-video-codec-sdk编解码

    opencv很早就支持cuda加速,但是一般用于图像处理模块。 在视频读(包含实时视频流)写上,opencv可以使用ffmpeg作为后端进行编解码,通常是cpu软编解。 如果ffmpeg的编译支持gpu硬编解,那么opencv的接口就直接支持硬件编解码了。 如果不想安装一堆依赖软件,可以直接下载 s

    2024年02月12日
    浏览(34)
  • FFMPEG解码实时流,支持cpu、gpu解码

    官网下载的ffmpeg目前只能下载到X64版本的库,具体编译请参考windows编译ffmpeg源码(32位库)_windows 32位ffmpeg动态库-CSDN博客 直接上代码 解码显示效果图 英伟达显卡播放效果因本人没有显卡不在这里展示,可以看出通过硬解降低将近一半的cpu。 代码参考 https://download.csdn.net/

    2024年01月18日
    浏览(33)
  • android硬编解码MediaCodec

    一 mediacodec简介        MediaCodec 类可以用来访问底层媒体编解码器,即编码器/解码器的组件。 它是 Android 底层多媒体支持架构的一部分(通常与 MediaExtractor,MediaSync,MediaMuxer,MediaCrypto,MediaDrm,Image,Surface 和 AudioTrack 一起使用)。        编解码器可以处理三类数据:压

    2023年04月12日
    浏览(76)
  • rk3588 mpp 视频硬编解码测试

    rk3588 mpp demo 使用记录。 MPP 源代码发布官方地址:https://github.com/rockchip-linux/mpp 发布分支为 release 分支,开发分支为 develop 分支,默认为开发分支。 下载命令:git clone https://github.com/rockchip-linux/mpp.git MPP 源代码编译脚本为 cmake,需要依赖 2.8.12 以上的版本,建议使用 2.8.12 版,

    2024年02月07日
    浏览(44)
  • Windows WSL子系统Ubuntu22.04安装Nvidia显卡驱动

    最近在研究AI,如果在Linux系统中部署的话需要重装系统,有些麻烦,又不想折腾。所以闲置很久没研究的WSL又拿起来研究了,当然部署ai还需要显卡驱动的支持,就必须先安装显卡驱动。 还没有安装过WSL的童鞋可以看我之前发布的这篇文章 windows11 安装 Linux子系统 WSL及ubunt

    2024年02月09日
    浏览(48)
  • FFmpeg音频解码流程详解及简单demo参考

            本文主要讲解FFmpeg的音频解码具体流程,API使用。最后再以一个非常简单的demo演示将一个mp3格式的音频文件解码为原始数据pcm文件。 本文主要基于FFmpeg音频解码新接口。    API接口简单大体讲解如下:         这一步是ffmpeg的任何程序的第一步都是需要先注

    2023年04月08日
    浏览(33)
  • FFmpeg在 Windows 环境编译(64位)支持h264,h265,和Intel QSV,Nvidia Cuda,AMD amf 硬件加速

    目录 目录 前言 一. 源码包下载 1. FFmpeg源码下载 2. MSYS2安装   2.1 执行下面命令配置环境   2.2 安装完成后将MSYS2安装路径下的mingw64/bin配置到windows环境变量中   2.3 安装其他工具( 默认全部安装 ): 3. 安装CMake工具   3.1 将CMake加入环境变量 4. 下载x264,x265   4.1 x264源码下载:

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包