Тема про 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 это не под силу?!
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 но как понимаете сути это не меняет..