FFmpeg集成到GPU

GPU加速视频处理集成到最流行的开源多媒体工具中。

FFmpeg是最流行的开源多媒体操作工具之一,它有一个插件库,可以应用于音频和视频处理管道的各个部分,并在世界各地得到广泛采用。

视频编码、解码和转码是FFmpeg最流行的应用之一。由于FFmpeg和libav社区的支持以及NVIDIA工程师的贡献,这两个工具现在都支持本机NVIDIA GPU硬件加速的视频编码和解码,通过整合NVIDIA视频编解码器SDK。

利用FFmpeg的音频编解码器、流muxing和RTP协议,FFmpeg与NVIDIA视频编解码器SDK的集成实现了高性能硬件加速的视频管道。

FFmpeg uses Video Codec SDK

FFmpeg支持由NVIDIA GPU上的视频硬件加速的以下功能:

H.264和HEVC的硬件加速编码*

H.264、HEVC、VP9、VP8、MPEG2和MPEG4的硬件加速解码***

对编码设置(如编码预设、速率控制和其他视频质量参数)进行精确控制

使用FFmpeg中的内置过滤器创建高性能的端到端硬件加速视频处理、1:N编码和1:N转码管道

能够使用FFmpeg中的共享CUDA上下文实现添加自定义的高性能CUDA过滤器

Windows/Linux支持

*支持取决于硬件。有关支持的GPU和格式的完整列表,请参阅可用的GPU支持列表。
**在不久的将来,libav将增加对HW解码的支持。

What’s New in FFmpeg

Includes Video Codec SDK 9.0 headers (both encode/decode)
10-bit hwaccel accelerated pipeline
Support for fractional CQ
Support for Weighted Prediction
CUDA Scale filter (supports both 8 and 10 bit scaling).
Decode Capability Query

FFmpeg GPU HW-Acceleration Support Table

有关NVIDIA GPU加速视频编码/解码性能的指南,请访问视频编解码器SDK页面了解更多详细信息。

Getting Started with FFmpeg/libav using NVIDIA GPUs

Using NVIDIA hardware acceleration in FFmpeg/libav requires the
following steps

Download and install ffnvcodec:

 git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.gitcd nv-codec-headers && sudo make install&& cd –

Download the latest FFmpeg or libav source code, by cloning the
corresponding GIT repositories

FFmpeg: https://git.ffmpeg.org/ffmpeg.git

Libav: https://github.com/libav/libav

Download
and install the compatible driver from NVIDIA web site
Download
and install the CUDA Toolkit CUDA toolkit
Use
the following configure command (Use correct CUDA library path in config
command below)

 ./configure --enable-cuda-sdk --enable-cuvid--enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include--extra-ldflags=-L/usr/local/cuda/lib64

Use
the following command to compile: make -j 10
Use
FFmpeg/libav binary as required. To start with FFmpeg, try the below
sample command line for 1:2 transcoding

 ffmpeg -y -hwaccel cuvid -c:v h264_cuvid -vsync 0 -i<input.mp4> -vf scale_npp=1920:1072-vcodec h264_nvenc <output0.264>-vf scale_npp=1280:720 -vcodec h264_nvenc <output1.264>

有关FFmpeg许可的详细信息,请参阅本页。有关构建过程和构建windows的更多信息,请参阅使用FFmpeg with NVIDIA
GPU硬件加速指南。

FFmpeg in Action

FFmpeg被许多项目使用,包括googlechrome和VLC播放器。通过配置FFmpeg将NVIDIA gpu用于视频编码和解码任务,您可以轻松地将NVIDIA硬件加速集成到这些应用程序中。

HandBrake是一个开源视频转码器,可用于Linux、Mac Windows。

HandBrake使用最常见的视频文件和格式,包括由消费者和专业摄像机创建的视频文件和格式、手机和平板电脑等移动设备、游戏和电脑屏幕录制以及DVD和蓝光光盘。HandBrake利用Libav、x264和x265等工具从这些工具创建新的MP4或MKV视频文件。

Plex Media Server是一个客户端服务器媒体播放器系统和软件套件,运行在Windows、macOS、Linux、FreeBSD或NAS上。Plex从您计算机的个人媒体库中组织所有的视频、音乐和照片,并允许您流式传输到您的设备。

Plex转码器使用FFmpeg处理媒体并将其转换为客户端设备支持的格式。

How to use FFmpeg/libav with NVIDIA GPU-acceleration

Decode a single H.264 to YUV

To decode a single H.264 encoded elementary bitstream file into
YUV, use the following command:

FFMPEG: ffmpeg -vsync 0 -c:v h264_cuvid -i <input.mp4>
-f rawvideo <output.yuv>

LIBAV: avconv -vsync 0 -c:v h264_cuvid -i <input.mp4>
-f rawvideo <output.yuv>
Example applications:

Video analytics, video inferencing
Video post-processing
Video playback

Encode a single YUV file to a bitstream

To encode a single YUV file into an H.264/HEVC bitstream, use
the following command:

H.264

FFMPEG: ffmpeg -f rawvideo -s:v 1920x1080 -r 30 -pix_fmt
yuv420p -i <input.yuv> -c:v h264_nvenc -preset slow -cq 10 -bf 2 -g 150
<output.mp4>

LIBAV: avconv -f rawvideo -s:v 1920x1080 -r 30 -pix_fmt
yuv420p -i <input.yuv> -c:v h264_nvenc -preset slow -cq 10 -bf 2 -g 150
<output.mp4>

HEVC (No B-frames)

FFMPEG: ffmpeg -f rawvideo -s:v 1920x1080 -r 30 -pix_fmt
yuv420p -i <input.yuv> -vcodec hevc_nvenc -preset slow -cq 10 -g 150
<output.mp4>

LIBAV: avconv -f rawvideo -s:v 1920x1080 -r 30 -pix_fmt
yuv420p -i <input.yuv> -vcodec hevc_nvenc -preset slow -cq 10 -g 150
<output.mp4>

Example applications:
Surveillance
Archiving footages from remote cameras
Archiving raw captured video from a single camera

Transcode a single video file

To do 1:1 transcode, use the following command:

FFMPEG: ffmpeg -hwaccel cuvid -c:v h264_cuvid -i
<input.mp4> -vf scale_npp=1280:720 -c:v h264_nvenc <output.mp4>

LIBAV: avconv -hwaccel cuvid -c:v h264_cuvid -i
<input.mp4> -vf scale_npp=1280:720 -c:v h264_nvenc <output.mp4>

Example applications:

Accelerated transcoding of consumer videos

Transcode a single video file to N streams

To do 1:N transcode, use the following command:

FFMPEG: ffmpeg -hwaccel cuvid -c:v h264_cuvid -i
<input.mp4> -vf scale_npp=1280:720 -vcodec h264_nvenc <output0.mp4>
-vf scale_npp 640:480 -vcodec h264_nvenc <output1.mp4>

LIBAV: avconv -hwaccel cuvid -c:v h264_cuvid -i
<input.mp4> -vf scale_npp=1280:720 -vcodec h264_nvenc <output0.mp4>
-vf scale_npp 640:480 -vcodec h264_nvenc <output1.mp4>

Example applications:

Commercial (data center) video transcoding

FFmpeg集成到GPU相关推荐

  1. FFmpeg在Intel GPU上的硬件加速与优化

    英特尔提供了一套基于VA-API/Media SDK的硬件加速方案,通过在FFmpeg中集成Intel GPU的媒体硬件加速能力,为用户提供更多的收益.本文来自英特尔资深软件开发工程师赵军在LiveV ...

  2. 【FFmpeg在Intel GPU上的硬件编解码实现】

    用于记录Intel CPU开发qsv硬件解码过程中遇到的一些问题及解决方案 以下文章是在开发过程中参考的比较有意义的文章,供大家学习和参考~~ https://zhuanlan.zhihu.com/p ...

  3. FFmpeg集成qsv的编译安装

    文章目录 FFmpeg集成qsv的编译安装 一.参考 二.编译安装流程 1. LibVA 和 Media-Driver 的安装 2. Intel Media SDK 编译 3. ffmpeg的编译安装 ...

  4. FFmpeg 集成 x265 编译及解码

    x265 是一个免费的软件库和应用程序,用于将视频流编码为 H.265/MPEG-H HEVC 压缩格式,并在 GNU GPL 条款下发布. FFmpeg 为了支持 H.265 编.解码可以集成 x2 ...

  5. 三.ffmpeg 集成av1

    copy from zhujiamin 一.介绍 FFmpeg4.2支持AV1.AVS2等视频编码格式,但本身并不包含解码器,需要自己集成.集成的编解码器要避开GPL开源协议(–enable-gpl) ...

  6. ffmpeg集成fdk_aac (windows)

    1,环境及版本 环境:windows,vs2017 版本:ffmpeg4.1,fdk_aac 2.0.2 资源:fdk_acc 2.0.2下载 2,编译 2.1,ffmpeg vs2017编译不在此赘 ...

  7. ffmpeg 调用 NVIDIA GPU 处理视频转码,笔记。和纯用CPU比起来,速度快5倍以上

    参考别人的文章 FFMPEG 使用显卡加速转码 ffmpeg 调用 NVIDIA GPU 处理视频转码 ffmpeg 硬件加速视频转码指南 ffmpeg 硬件加速 wmv 视频转码 自己的关于ffmp ...

  8. 英特尔第11代酷睿处理器TigerLake发布,集成Xe GPU,采用10nm制程技术

    2020 年 9 月 2 日,英特尔发布了下一代移动 PC 处理器,,搭载英特尔锐炬® Xe 显卡的全新第 11 代智能英特尔酷睿处理器(代号"Tiger Lake")是全球性能领 ...

  9. NDK R20编译Ffmpeg集成Android命令

    本次编译环境为windows,linux和mac大同小异(windows都异类了,其他环境编译没啥问题) 下载好MINGW,咋个配置的,百度吧,忘了. 下载好NDK文件,我是R20版本的:在从ffmp ...

最新文章

  1. seaborn系列 (17) | 回归模型图lmplot()
  2. [ASP.NET MVC 小牛之路]11 - Filter
  3. BZOJ 2733 | 洛谷 P3224 [HNOI2012]永无乡
  4. 从杂技表演到日剧BGM(r12笔记第23天)
  5. JQuery UI之Autocomplete(2)后端获取数据
  6. 自定义日期工具类 java 1614698552
  7. C#_未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
  8. Word文档目录制作
  9. 【git】从零开始在git上部署自己的免费生日祝福网页
  10. 最好用的木门免费录单软件
  11. Win10 安装 Rational Rose 教程(带超详细图文)
  12. 【精选】VI手册设计模板合集,附带源文件、预览图、精细分类
  13. 如何删除“我的电脑”、“此电脑”中坚果云图标--三种方法(2020年的可行方案)
  14. 基于51单片机的扫地小车,扫地机器人设计。 有原理图,程序代码,原文
  15. 华为人均工资70万人人想要,可华为员工16项标准你能做到几条?
  16. Linux是什么 ?
  17. requests爬取豆瓣前250部高分电影
  18. DUN连接完成后,pc与手机进行LCP协商
  19. 企业级PPTP服务器部署
  20. 【Day8.3】黄河第一桥

热门文章

  1. 2022-2028年中国共享住宿行业深度调研及投资前景预测报告
  2. G6实现标签拖动连线画流程图
  3. LeetCode简单题之位1的个数
  4. 嵌入式Linux设备驱动程序:编写内核设备驱动程序
  5. 电子设计搜索引擎引入分析和见解
  6. 大数据调度平台Airflow(三):Airflow单机搭建
  7. 2021年大数据Flink(二十二):Time与Watermaker
  8. 使用Docker快速搭建PHP开发环境
  9. 石头机器人拖地水量调节_石头扫地机器人T7上手体验:电控水箱和超大容量,扫拖一体全能型...
  10. C++ 预编译的时候使用defined 的含义