LINUX.ORG.RU

Сообщения KGB1st

 

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

Форум — Development

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

 , ,

KGB1st
()

Как правильно транскодить на AMD при помщи VAAPI?

Форум — Linux-hardware

Есть выделенная машина, на ней стоит FX9590. Ниже пример тестового скрипта, который выполняет транскодинг.

#!/bin/bash
ffmpeg -re \
	-i input.flv \
	-c:a copy \
	-b:a 128k \
	-c:v libx264 \
	-bf 0 \
	-b:v 6M \
	-minrate 6M \
	-maxrate 6M \
	-bufsize 200K \
	-preset faster \
	-crf 7
	-r 60 \
	-x264-params nal-hrd=cbr:force-cfr=1:keyint=120 \
	-movflags +faststart \
-f flv rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx
#Input #0, flv, from 'input.flv':
  Metadata:
    encoder         : Lavf57.84.100
  Duration: 00:02:12.50, start: 0.000000, bitrate: 74641 kb/s
    Stream #0:0: Video: h264 (High), yuvj420p(pc, bt709/unknown/unknown, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 80000 kb/s, 60 fps, 60 tbr, 1k tbn, 120 tbc
    Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp, 320 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (copy)
#Output #0, flv, to 'rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx':
  Metadata:
    encoder         : Lavf58.12.100
    Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 9000 kb/s, 60 fps, 1k tbn, 60 tbc
    Metadata:
      encoder         : Lavc58.18.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 9000000/0/9000000 buffer size: 200000 vbv_delay: -1
    Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 48000 Hz, stereo, fltp, 128 kb/s

Но, на этой же машине еще есть графический ускоритель AMD R9 390X. Как я понимаю, он кодирует при помощи VCE. Однако, из за ограничений Ubuntu 18.10 по графическим драйверам от амудешников, приходится использовать средства дефолнтного драйвера MESA.

И тут у меня полный безперспективняк, по той причине что используя стандартные советы по кодированию(целый раздел по VAAPI на FFMPEG). Видео которое получается на выходе имеет нечитабельный формат. А все попытки как то решить эту проблему, заканчиваются плевками от ffmpeg в мою сторону.

По этому прошу помощи от бывалых, может кому не лень чиркнуть подобные настройки кодировщика только под мою ситуацию с GPU. Заранее буду очень благодарен.

 , ,

KGB1st
()

RSS подписка на новые темы