Запись без потерь с аппаратным ускорением на 6700 XT с использованием ffmpeg

Более подробное решение:

echo "scott name1;tiger name2;elephant name3;mouse name4;bla1 name5;bla2 name6" \
  | tr ';' '\n' | grep "scott" | cut -d ' ' -f 2
0
27.10.2021, 13:31
2 ответа

Этот вопрос был задан вчера, и ответ остается прежним. :Видеокодеки HW не поддерживают изменение коэффициента квантования, т.е. crfи более того, они не поддерживают кодирование без потерь.

Изhttps://trac.ffmpeg.org/wiki/Hardware/VAAPI

Mapping options from libx264

No CRF-like mode is currently supported. The only constant-quality mode is CQP (constant quantisation parameter), which has no adaptivity to scene content. It does, however, allow different quality settings for different frame types, to improve compression by spending fewer bits on unreferenced B-frames - see the (i|b)_q(factor|offset) options. CQP mode cannot be combined with a maximum bitrate or buffer size.

1
27.10.2021, 15:24

Я думаю, что действительно кодирование без потерь может быть выполнено только в программном обеспечении, но с более высоким битрейтом это может выглядеть достаточно хорошо.

Также в вики ffmpeg говорится, что VAAPI поддерживается лишь частично для графических процессоров AMD.

Но я подозреваю, что в настоящее время вы все равно используете встроенный в ЦП графический процессор, что может привести к проблемам с производительностью:

If you have multiple usable devices in the same machine (for example, an Intel integrated GPU and an AMD discrete graphics card), they can be used simultaneously to decode different streams:

ffmpeg -init_hw_device vaapi=intel:/dev/dri/renderD128 -init_hw_device vaapi=amd:/dev/dri/renderD129 -hwaccel vaapi -hwaccel_device intel -i... -hwaccel vaapi -hwaccel_device amd -i...

Вы проверили, доступно ли более одного аппаратного устройства?

Попробуйте ls /dev/dri/ , чтобы узнать, какие устройства доступны.

Независимо от того, использовали ли вы правильное устройство или нет, опция-qp 0 , вероятно, не будет работать должным образом,поэтому попробуйте это с точными данными командами и посмотрите, дадут ли они лучшие результаты:

ffmpeg -vaapi_device /dev/dri/renderD128 -f x11grab -video_size 1920x1080 -i :0 -vf 'hwupload,scale_vaapi=format=nv12' -c:v h264_vaapi -qp 24 output.mp4

или

ffmpeg -vaapi_device /dev/dri/renderD128 -f x11grab -video_size 1920x1080 -i :0 -vf 'format=nv12,hwupload' -c:v h264_vaapi -qp 24 output.mp4

Только с изменением разрешения, и если вы нашли другое аппаратное устройство, вы можете попробовать изменить и это.

Было бы интересно, если бы вы могли получить хорошее качество с разумным битрейтом / размером файла, поэтому, пожалуйста, дайте мне знать, если вам это удалось.

Кстати, в следующем примере используется не аппаратное ускорение, а кодирование без потерь, так что вы можете попробовать и это:https://trac.ffmpeg.org/wiki/Capture/Desktop#lossless-recording

To speed up the encoding process, you can use lossless encoding and disable advanced encoder options, e.g.:

ffmpeg -video_size 1920x1080 -framerate 30 -f x11grab -i :0.0 -c:v libx264rgb -crf 0 -preset ultrafast -color_range 2 output.mkv

-crf 0 tells x264 to encode in lossless mode; -preset ultrafast advises it to do so fast. Note the use of libx264rgb rather than libx264; the latter would do a lossy conversion from RGB to yuv444p (8 bit yuv444p is not enough to preserve 8 bit RGB, 10 bit YCbCr is needed)....

The encoder should be fast enough on most modern hardware to record without any framedrop, and even leave enough CPU headroom for other applications.

If you're going to archive the recording or are concerned about file size, re-encode it losslessly again, but with a slower preset....

2
31.10.2021, 09:51

Теги

Похожие вопросы