LINUX.ORG.RU

Motion + Ffmpeg жрут слишком много CPU

 , , ,


0

2

Привет. Сформировался у меня вопрос следующего плана:

Есть IP-камера, отдающая RTSP-поток разрешением 1920х1080. Битрейт не помню, но шото около 4Мбит\с.

Этот поток читается программкой motion, которая формирует с RTSP MJPG-стрим с целью показа через браузер, кроме этого motion пишет ужатое видео через extpipe и ffmpeg.

Этот motion какого-то хрена жрет процессорное время. 175%-200% и так далее.

Когда он запущен на x86-архитектуре (Целик J1800) - то разумеется это терпимо, хотя тормозят клиентские сайты на вордпрессе. Терпимо тормозят. MJPG-поток отдается нормально. Сколько FPS хочу - столько и дает.

Но когда он запущен на ARM (Cubietruck, Allwinner A20) - уже тормозит сам MJPG. 1-2 FPS.

Собирал из исходников на обоих девайсах.

Беглый гуглеж в интернете дает ссылки на лабуду стиля «Уберите детектирование движения чтобы получить прирост скорости». Ага, я и камеру могу отключить, тогда скорость еще выше станет.

Конфиг motion, касаемый камеры:

netcam_url rtsp://192.168.88.10:554/user=admin&password=&channel=1&stream=0?.sdp
stream_port 10015
stream_maxrate 10
stream_localhost off
stream_quality 10
text_right %d.%m.%Y_%H:%M:%S
width 1920
height 1080
framerate 10
auto_brightness off
minimum_frame_time 0
threshold 2500
threshold_tune off
lightswitch 0
minimum_motion_frames 5
gap 0
max_mpeg_time 0
output_all off
output_normal best
output_motion off
quality 100
ppm off
emulate_motion on
target_dir /backup/videos
movie_filename %d.%m.%Y
use_extpipe on
extpipe ffmpeg -framerate 4 -y -f rawvideo -pix_fmt yuv420p -an -video_size 1920x1080 -i pipe:0 -vcodec flv -b:v 800k -filter:v "setpts=0.4*PTS" -r 4 -f flv /backup/videos/%d.%m.flv

Сети на устройствах обе гигабитные, воткнутые в один и тот же роутер что и камера.

Я бы поверил в ресурсоемкость стримера или перекодирования, но блин, в IP-камерах стоит одноядерник на частоте 500Мгц и 64 Мб памяти. Что-то я делаю не так.

Подскажите пожалуйста, можно ли каким-то образом уменьшить потребление процессора этим motion ?

Thnx!


Беглый гуглеж в интернете дает ссылки на лабуду стиля «Уберите детектирование движения чтобы получить прирост скорости». Ага, я и камеру могу отключить, тогда скорость еще выше станет.

Я бы поверил в ресурсоемкость стримера или перекодирования, но блин, в IP-камерах стоит одноядерник на частоте 500Мгц и 64 Мб памяти. Что-то я делаю не так.

Я думаю, что одноядерник не детектирует движение. А если и детектирует, то не с помощью анализа изображения, а простым инфракрасным датчиком. Впрочем, могу ошибаться.

aureliano15 ()

Берут затычку вместо проца, потом софтварно всё на нём делают и ноют что тормозит. Необучаемость из десяти.

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

Ну если на то пошло, то я тоже не детектирую. emulate_motion on - значит что движение есть всегда. Разве что если оно не реализовано через жопу, и функция определения движения все же выполняется, только всегда возвращает true, но это ведь мудачество чистой воды со стороны разрабов.

vblats ()
Последнее исправление: vblats (всего исправлений: 1)
Ответ на: комментарий от anonymous

Жаль твоего личика не видно, а то здесь периодически кукарекают о том что ARM всех и вся порвет, у всех все на нем работает, даже третьегном, и единственное что мешает арму зохавать мир - отсутствие на нем Винды. Вдруг ты тоже был их ориентации :)

Так или иначе, Убунта на нем работает. XFCE на нем тоже работает сносно. Даже Iceweasel вполне себе работает. А если без гуев, то и mplayer видео 1920х1080 играет. А стриминг MJPG не осиливает шоле ?

vblats ()

Снижайте разрешение и битрейт - чудес не бывает.. иначе так и будет продолжаться. От софта (motion/ffmpeg) тут уже мало что зависит, просто слишком трудоемкая задача для слабого проца. У меня на zoneminder также жрет весь проц старенького неттопа (Atom) при том что в режиме тупо записи потока RTSP с 4-х камер 1920х1080 тот же самый комп справляется в легкую. Так что либо более мощное железо, либо какой-нибудь железный DVR, либо просто запись без motion detect.

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

Ну если на то пошло, то я тоже не детектирую. emulate_motion on - значит что движение есть всегда.

Тогда непонятно, зачем ещё одна сущность в виде motion, которая к тому же ещё и тормозит? Почему бы не обойтись одним ffmpeg'ом? Вот небольшая статейка в песочнице хабра как раз на эту тему: https://habrahabr.ru/sandbox/98985/ .

aureliano15 ()

Еще один «я прост хочу стримануть видео на сайтик».

IP-камерах стоит одноядерник на частоте 500Мгц

Даже если там стоит древний 300мгц, рядом в пузике арма железный h264/jpeg кодек разведен, можно рассмотреть на красочных слайдах hisilicon, ambarella

Подскажите пожалуйста, можно ли каким-то образом уменьшить потребление процессора этим motion ?

Завези в ffmpeg железное транскодирование на Allwinner и уменьшишь потребление.

Ну и да, идея стримит видео в mjpg ущербна изначально. Жирный поток, поганная картинка.

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

Еще один «я прост хочу стримануть видео на сайтик».

Не не. Все проще. Это камера видеонаблюдения для дома, которую я хочу наблюдать кроссплатформенно безо всяких извращений с плагинами. MJPG - идеальный вариант.

Даже если там стоит древний 300мгц, рядом в пузике арма железный h264/jpeg кодек разведен, можно рассмотреть на красочных слайдах hisilicon, ambarella

Яснопонятно)

Завези в ffmpeg железное транскодирование на Allwinner и уменьшишь потребление.

Жрет сам motion, без ffmpeg. Да и я думал что вроде как компилятор занимается оптимизациями на конкретной архитектуре. Ладно, я в этом не разбираюсь.

Ну и да, идея стримит видео в mjpg ущербна изначально. Жирный поток, поганная картинка.

Увы это единственное решение которое будет работать и на планшете под Андроидом, и на планшете под Виндой, и на телефоне, и на ПеКа, и не затребует при этом больше 5-ти минут внимания.

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

Тогда непонятно, зачем ещё одна сущность в виде motion, которая к тому же ещё и тормозит? Почему бы не обойтись одним ffmpeg'ом? Вот небольшая статейка в песочнице хабра как раз на эту тему: https://habrahabr.ru/sandbox/98985/ .

Потому что у motion'а есть свои плюшки которыми я бы хотел пользоваться...

И тормозит сам motion, даже если ffmpeg выключен.

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

программкой motion, которая формирует с RTSP MJPG-стрим

motion в пузе использует ffmpeg

сомневаюсь что из rtsp проливается jpg, обычно там h264 и значит motion транскодирует h264 -> mjpg

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

посмотрел в url, я его знаю, там точно h264

ffprobe -hide_banner rtsp://192.168.88.10:554/user=admin&password=&channel=1&stream=0?.sdp
hizel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.