LINUX.ORG.RU

RTSP CUDA opencv streaming

 , ,


0

2

Всем привет!

Понадобилось нативно включить в opencv поддержку rtsp потока в формате h264 при помощи ffmpeg+cuda. Версия 3.2.4 его нормально тянет и хочется минимумом телодвижений сделать то же в OpenCV. нашел в modules/videoio/src/cap_ffmpeg_impl.hpp строчку, которая включает поддержку rtsp по tcp и хотел туда же вставить -hwaccel cuvid, но после этого opencv отказалась собираться. Есть ли в сети патчи, которые умеют правильно отображать видео в связке (OpenCV+FFMpeg+Cuda+RTSP+H264)?

★★

ты хочешь стримить или получать rtsp поток в пузо opencv?

hizel ★★★★★ ()
Ответ на: комментарий от aido

нашел в modules/videoio/src/cap_ffmpeg_impl.hpp строчку, которая включает поддержку rtsp по tcp и хотел туда же вставить -hwaccel cuvid, но после этого opencv отказалась собираться.

Ладно, я поднапрягся и нашел куда ты там тыкаешь. Нет, это не так работает. Ffmpeg не обладает надмозгом, тебе нужно ниже смотреть в район avcodec_find_decoder. Не уверен впрочем, что дальше opencv не удивится, если ему на вход упадет не AV_PIX_FMT_YUV420P, а AV_PIX_FMT_CUDA

hizel ★★★★★ ()

RTSP ортогонально вообще HWAccel.

RTSP это в области demuxing, в области avformat. Там хоть mp4 файл, хоть что, ортогонально абсолютно. У меня лично просто по тупому RTP в проекте принимается H264.

HWAccel и вообще, любое аппаратное ускорение - это уже про контексты avcodec. Т.е. ты получаешь из AVFormatContext некий AVPacket, сжатый кодированный набор данных(для видео это обычно один сжатый фрейм или около того), и его передаешь декодеру, он, если правильно настроен, с HWAccel, с помощью некого API аппаратного ускорения, складывает YUV420, в том или ином виде, в текстуру на видеокарте.

Если ты про API командной строки, то там я меньше знаю уже, там например не все hwaccel поддерживаются итд.

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