ФОРМУЛА АПСКЕЙЛА ДО 4k ЧЕРЕЗ FFMPEG В КОНЦЕ ОПИСАНИЯ!!!
В этом обзоре на OBS и FFMPEG я демонстрирую FFMPEG-плагин для OBS. Он позволяет задать очень тонкие настройки графической карте Nvidia, какие можно задать только через FFMPEG, но запись, тем не менее, идёт при помощи OBS, вместе со всеми достоинствами OBS: низким расходованием вычислительных мощностей, горячими клавишами (на старт записи, приостановку, возобновление, завершение), смена сцен, низкотребовательные к ресурсам оверлеи (наложение видео с Веб-камеры) и низкотребовательное объединение нескольких звуковых дорожек. Запуск записи с такими же настройками через FFMPEG + PowerShell гораздо сильнее нагрузило бы процессор, и мой ноутбук значительно сильнее бы нагрелся, а стабильность и надёжность видеозаписи была бы ниже.
В этом видео для теста я запускаю просмотр матча в CSGO (Counter-Strike) на почти максимальных настройках графики в игре. А потом при помощи FFMPEG я провожу апскейл с FullHD (1920x1080) до 4k (3840x2160). Очень важный аспект, что качество апскейла в FFMPEG значительно выше, чем в DaVinci Resolve!!! Настройки энкодирования видеодорожки в DaVinci Resolve просто ужасные, как и настройки апскейлинга. В этом плане FFMPEG - однозначный победитель!!!
Важно также разбираться, как правильно выставить настроки апскейлинга FFMPEG (формулу апскейлинга я разместил ниже в описании).
Конечно, для записи видео из игр в ультра-качестве требуется качественный накопитель, у которого есть высокая скорость записи - хотя бы 80 Мб/с, а лучше - 500Мб/с, т.к. видео без потерь очень много пожирает места на диске. И количество пожираемого на диске места очень сильно зависит от динамичности изображения на экране, детализации и контрастности. Основной принцип выставления настроек для ультра высокого качества - поставить параметр QP на 0 для каждого из трёх типов кадров в h264: P, B, I.
P.S.: хотя... вообще-то с чисто научно-технической точки зрения сделать видео в h264 абсолютно без потерь можно только при кодировании через процессор (libx264) (а не через графическую карту) и только если задействовать скрытые настройки, о которых не сказано даже ни в каких мануалах и тьюториалах по FFMPEG! Но если эти Lossless настройки выставить, то конечное видео будет иметь битрейт вполовину от RAW-видео. Т.е. размер на диске будет чрезвычайно большим!
Характеристики исходных видео для этого ролика:
1) для версии FullHD:
Format/Info : Advanced Video Codec
Format profile : High 4:4:4 [email protected]
Bit rate mode : Variable
Bit rate : 114 Mb/s
Frame rate mode : Constant
Frame rate : 60.000 FPS
Color space : YUV
Chroma subsampling : 4:4:4
Bits/(Pixel*Frame) : 0.914
Stream size : 13.8 GiB (96%)
Source stream size : 14.4 GiB (100%)
2) для версии 4k (после апскейла через FFmpeg) (именно это видео и залито на Youtube):
Format/Info : Advanced Video Codec
Format profile : [email protected]
Bit rate mode : Variable
Bit rate : 277 Mb/s
Frame rate mode : Constant
Frame rate : 60.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bits/(Pixel*Frame) : 0.556
Stream size : 34.2 GiB (100%)
https://obsproject.com/ru
https://ffmpeg.org/
#OBS #FFMPEG #Screenrecording #Letsplay #ScreenCapture #4k #upscaling #videoupscaling #qp0 #h264 #x264 #h264_nvenc #CSGO #video_upscaling #vp9 #vp09
ФОРМУЛА ДЛЯ АПСКЕЙЛА ВИДЕО ДО 4k ЧЕРЕЗ FFMPEG:
(Вам надо разместить видео в ту папку, на которую настроен ваш PowerShell либо задать нужную папку отдельной формулой PowerShell, а так же указать название вашего видео в формуле)
ffmpeg -hide_banner -loglevel +repeat+level+info `
-i "2022-02-16_23-23-44.mov" `
-map 0:v:0 -vf scale="w=3840":"h=2160":"in_color_matrix=bt709":"out_color_matrix=bt709":"in_range=limited:out_range=limited":"sws_flags=neighbor+accurate_rnd+full_chroma_int+full_chroma_inp":"srcw=1920":"srch=1080":"dstw=3840":"dsth=2160":"src_format=yuv444p":"dst_format=nv12":"sws_dither=x_dither" `
-noautoscale -c:v:0 h264_nvenc -gpu 0 -vsync 1 -framerate copy -video_size copy -rc constqp -init_qpP 0 -init_qpB 0 -init_qpI 0 -rc-lookahead 0 -bufsize:v 512M -pix_fmt nv12 -profile:v high -preset p7 -tune hq -level 6.2 -coder vlc -weighted_pred 0 `
-sws_flags neighbor+accurate_rnd+full_chroma_int+full_chroma_inp `
-map '0:a:0' -c:a:0 copy `
-color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range "tv" `
-metadata title="FFmpeg_Screen_Recording" -metadata comment="$(get-date -f yyyy-MM-dd_HH-mm-ss)_any_comment" `
-f mov -write_prft wallclock `
"FFmpeg_filter_$(get-date -f yyyy-MM-dd_HH-mm-ss).mov"