Я успешно вывел поток RTSP на канал RGB24, но заметил, что загрузка процессора все еще высока (20-45%), несмотря на использование -hwaccel cuvid
и -vcodec h264_cuvid
(без аппаратного ускорения он может go до 100-300 %; основано на верхней команде на Linux).
Текущий код, который я использую:
ffmpeg
.input(*rtsp_add*, rtsp_transport='tcp', fflags='nobuffer', flags='low_delay', hwaccel='cuvid', vcodec='h264_cuvid', vsync=0)
.output('pipe:', format='rawvideo', pix_fmt='rgb24')
.run_async(quiet=False, pipe_stdout=True)
В тот момент, когда я использую -vcode c h264_nven c, я получаю кучу ошибок, так как считаю, что они несовместимы с RGB24. Используя команду "ffmpeg -pix_fmts", я замечаю, что почти ничего не подпадает под "Формат с аппаратным ускорением". Я не против работать в YUV420p, YUV444p, RGB24 и т. Д. c ... Означает ли это, что я не могу вывести изображения в канал, если я решу использовать аппаратное кодирование?
Я бы предпочел записать вывод в канал по сравнению с записью в физический файл и повторным чтением, чтобы манипулировать данными для повышения производительности. Опция для вывода в JPG или PNG в памяти также хороша.