标签: vaapi

(FFmpeg) VP9 Vaapi 从给定的官方 ffmpeg 示例编码到 .mp4 或 .webm 容器

我正在尝试实现 vp9 硬件加速编码过程。我遵循 ffmpeg 官方 github 的示例(此处 -> vaapi_encode.c)。

但给定的示例仅将 .yuv 文件保存到 .h264 文件,我想将帧保存到 .mp4 或 .webm 容器。并具有质量控制能力等。

我不是从文件中读取帧,而是从实时源中收集帧。当实时视频中有完整的 5 秒帧时,使用 vp9_vaapi 将这些帧编码为 5 秒 .mp4 文件。

我可以将实时直播中的所有 5 秒帧保存到 .mp4 或 .webm 文件中,但它们无法正确播放(更准确地说:继续加载,然后我打开)。

官方网站示例的结果:

在此输入图像描述

cpu编码vp9 .mp4文件结果:

在此输入图像描述

编辑:结果 在此输入图像描述

mp4 encoding ffmpeg hardware-acceleration vaapi

6
推荐指数
1
解决办法
8093
查看次数

使用 ffmpeg 和 vaapi 转码 HEVC 4K HDR

我正在尝试使用我的 LG OLED 电视的 ffmpeg 和 VAAPI 硬件加速将 4K HEVC HDR 视频转码为较低的比特率。

我使用以下文件: 视频

使用以下命令:

ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device va -filter_hw_device va -i LG\ 4K\ HDR\ Demo\ -\ Daylight.mkv -map 0:0 -t 00:00:20 -c:v hevc_vaapi -sei hdr -qp:v 21 lg_vaapi.mkv
Run Code Online (Sandbox Code Playgroud)

但是这个文件在我的电视上没有被识别为 HDR。

使用 libx265 编码器(当然慢得多)时,它工作正常:

ffmpeg -i LG\ 4K\ HDR\ Demo\ -\ Daylight.mkv -t 00:00:20 -map 0:0 -c:v libx265 -preset medium -crf 18 -x265-params "colorprim=bt2020:colormatrix=bt2020nc:transfer=smpte2084:colormatrix=bt2020nc:hdr=1:info=1:repeat-headers=1:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(11000000,40)" lg_libx265.mkv
Run Code Online (Sandbox Code Playgroud)

比较两个文件上 mediainfo 的输出时,我可以看到没有为视频轨道设置以下属性:

  • 颜色范围
  • 原色
  • 传输特性

vaapi 编码的媒体信息:

General
Unique …
Run Code Online (Sandbox Code Playgroud)

ffmpeg hdr vaapi libx265

6
推荐指数
1
解决办法
2601
查看次数

使用 ffmpeg 的 kmsgrab 设备和叠加的网络摄像头记录 Linux Wayland/DRM 屏幕

设置是 Linux,ffmpeg 使用 kabylake iGPU。

我正在使用kmsgrab设备捕获正在运行的摇摆实例,这需要使用硬件后端在我的硬件上连贯地处理图像。只有 VA API 符合此要求。我想在编码过程中在右下角覆盖网络摄像头。然而,试图操纵过滤器图来实现这一点的尝试没有成功。这最终适用于 Twitch/Tube 流。

现在,我实际上是将网络摄像头捕获到 sdl 窗口,并使用单独的ffmpeg. 这实际上并没有解决我的问题,因为窗口很容易被工作区切换或其他窗口伪装。

这是解决方法:

#!/usr/bin/env zsh

# record webcam and open it in sdl window
ffmpeg -v quiet -hide_banner \
  -re -video_size 640X480 -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -i /dev/video0 \
  -vf 'format=nv12,hwupload' -c:v hevc_vaapi -f hevc - \
  | ffmpeg -v quiet -i - -f sdl2 - &

# wait for webcam window to open
until swaymsg -t get_tree | grep 'pipe:' …
Run Code Online (Sandbox Code Playgroud)

youtube ffmpeg twitch vaapi

5
推荐指数
1
解决办法
3214
查看次数

为什么 ffmpeg 没有完整记录所有 VAAPI 过滤器图操作,并且还有比我在这里列出的更多的内容吗

我已从启用的ffmpeg快照进行编译vaapi

$ ffmpeg -hwaccels
Hardware acceleration methods:
vaapi
Run Code Online (Sandbox Code Playgroud)

我对使用 GPU 可以执行的可用过滤图操作感到好奇,并找到了此文档页面

https://ffmpeg.org/ffmpeg-filters.html#toc-VAAPI-Video-Filters

此页面显示单个过滤器tonemap_vaapi。我觉得很奇怪,只有一个过滤器,而不是tonemap缩放之类的东西。

所以我运行了这个命令

$ ffmpeg -filters | grep vaapi
 ... deinterlace_vaapi V->V       (null)
 ... denoise_vaapi     V->V       (null)
 ... procamp_vaapi     V->V       (null)
 ... scale_vaapi       V->V       (null)
 ... sharpness_vaapi   V->V       (null)
Run Code Online (Sandbox Code Playgroud)

它显示了更多我在任何地方都找不到记录的过滤器。这些没有记录是否有原因?我在哪里可以找到如何使用它们?此外,我注意到这tonemap_vaapi不是可用过滤器之一。

当我们讨论这个主题时,我真的希望有某种方法可以使用硬件加速来转置视频。我没有看到transpose_vaapi过滤器,但我确实注意到这个线程https://patchwork.ffmpeg.org/project/ffmpeg/patch/20181225061644.6384-1-zachary.zhou@intel.com/,这个功能是否已添加到ffmpeg中或者为什么不是吗?有没有办法用 OpenCL 进行转置?我在这里没有看到任何提及在 OpenCL 过滤器下转置的内容 https://ffmpeg.org/ffmpeg-filters.html#OpenCL-Video-Filters

谢谢

编辑 -

我发现该文件ffmpeg/libavfilter/allfilters.c列出了许多未记录的过滤器。

https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/allfilters.c

这如何transpose_vaapi

ffmpeg opencl vaapi

5
推荐指数
1
解决办法
1399
查看次数

你如何让FFMPEG用vaapi编码?

我已经看到了使用libavcodec和vaapi来加速解码的各种例子,但你如何使用它来加速编码呢?

encoding ffmpeg vaapi

4
推荐指数
2
解决办法
1万
查看次数

hwupload 的 FFMPEG Hwaccel 错误

我目前正在尝试在 FFMPEG 上使用 vaapi hwaccelleration。

在我的命令,我必须hwaccelvaapihwaccel_output_fomratvaapi-hwaccel_device/dev/dri/renderD128,还有-vfformat=nv12, hwupload和视频编解码器-c:vh264_vaapi

当我现在尝试启动它时,出现错误

grep stderr: [hwupload @ 0x30bb660] A hardware deveice reference is required to upload frames to. [Parsed_hwupload_1 @ 0x30bb560] Query format failed for 'Parsed_hwupload_1': Invalid argument

我可以在某处定义硬件设备引用吗?我认为这就是我所做的hwaccel_device,但似乎不是。那么我该怎么做才能让它发挥作用?

ffmpeg hardware-acceleration vaapi

2
推荐指数
1
解决办法
5538
查看次数

使用 vaapi 硬件加速播放视频的 gst-launch 命令

我需要两个 gst-launch-1.0 命令行

1)第一个是简单的播放视频(.mp4)而不使用任何硬件加速。

2)第二个是使用硬件加速播放视频(.mp4),我使用的是带有i965驱动程序的英特尔高清显卡。

我已经安装了 gstreamer 插件。

任何帮助,将不胜感激。

gstreamer hardware-acceleration vaapi

2
推荐指数
1
解决办法
908
查看次数