LINUX.ORG.RU

ffmpeg как увеличить производительность обработки при получении RAW?

 , ,


0

1

Тема про OBS и FFMPEG

В общем такая история, столкнулся однажды некий профан с умозаключительным выводом о том что OBS на nvenc_h264 работает быстрее стандартного релиза ffmpeg на том же nvenc_h264 при одинаковых настройках битрейта на cabac и cbr, и даже снижая preset дефолтный ffmpeg упорно тупит.

Вопрос: почему это происходит. Неужели OBS на каком то другом уровне работает с ffmpeg? И вообще, в режиме прямых трансляций он использует API ffmpeg? С чего такая производительность?

Тест проводился с захватом uhd2160 изображения с последующим его scale fhd. При этом на стриме происходили жуткие буферизации и видео вообще играло словно захват происходит в 15 кадров, а не как указано framerate 60. И аналогичные настройки в OBS, и все идет своим ходом. Странно но если кодить на обычном x264 то вроде все хорошо. Но процессора с хорошим заделом для нужд rtmp нет. Так же важно учитывать что на этой же карте(GPU) запускается и игра, и в ОБС и в FFMPEG. Но вот как раз второй и не дает мне покоя. Почему для первого стримить не проблема, а для ffmpeg это не под силу?!

Параметры OBS

cls
@title testing desctop stream transcoding
@echo off
echo starting transocding from native uhd2160 to fhd format.. Host: YouTube
ffmpeg ^
	-re ^ -hwaccel cuvid ^
	-f dshow -rtbufsize 2048M -video_size uhd2160 -pixel_format nv12 -framerate 60 ^
	-i video="Game Capture 4K60 Pro Video 01":audio="Game Capture 4K60 Pro Audio 01" ^
	-c:v h264_nvenc ^
	-level:v 4.2 ^
	-profile:v high ^
	-preset:v bd ^
	-b:v 8.8M -minrate 8.8M -maxrate 8.8M -bufsize 200K ^
	-vf scale=w=1920:h=1080:force_original_aspect_ratio=decrease:flags=lanczos ^
	-2pass 1 ^
	-qp 0 ^
	-color_range 2 ^
	-colorspace bt709 ^
	-bf 0 ^
	-rc:v cbr ^
	-coder cabac ^
	-vsync 1 ^
	-r 60 ^
	-g 120 ^
	-keyint_min 1 ^
	-acodec aac ^
	-ab 128k ^
	-movflags +faststart ^
	-f flv rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx && pause

К сожалению параметры OBS я выдрать не могу. Но исходные данные по битрейту такие же, а пресет еще выше..

P.S. сорри, скрип в batch но как понимаете сути это не меняет..

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

anonymous ()
Ответ на: комментарий от anonymous

keyint_min - это не тоже самое что ключевые кадры? Я мог просто перепутать. В трубе рекомендуют ставить 1 Reference Frame и 1-4 Keyframe для прямых трансляций..

KGB1st ()
Ответ на: комментарий от anonymous

-bf 0, это они Б фреймы же, выключены же вроде.. profile используется самим OBS.. причем тут профайл.. я писал что даже снижение качества ничего не дает.

KGB1st ()
Ответ на: комментарий от KGB1st

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

anonymous ()
Ответ на: комментарий от KGB1st

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

anonymous ()
Ответ на: комментарий от anonymous

как вариант да, скомпильнуть самому с выводом в лог

KGB1st ()
Ответ на: комментарий от anonymous

у меня вообще странно как то, указан vsync 1, без него 30 кадров прямая трансляция, а видео если писать - то 60) Какой то бред..

KGB1st ()
Ответ на: комментарий от KGB1st

-r 60 вообще для mp4 формата, я не знаю зачем вы кучу параметров наставили, там основных и главных кот наплакал

anonymous ()

https://trac.ffmpeg.org/wiki/StreamingGuide

лично меня смутило што ты ресемплиш из uhd в fhd 60fps через lanczos, это может очинь тормозить и ещё я не уверен што ffmpeg может делать это используя нескалько процессоров. ты без стрима нагрузку на проц пасматри, там 100% будет, инфа сотка

anonymous ()
Ответ на: комментарий от KGB1st

короче у меня проблемы с пониманием природы этого muxer-demuxer, я не могу разобраться почему и как правильно должно быть что бы на захвате установилось ровно 60 кадров. В этом вся проблема..

KGB1st ()
Ответ на: комментарий от KGB1st

билд obs уже сделали ? какой вывод по параметрам для ffmpeg от obs ?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.