• zoneminder и кодеки

    From Dmitriy Romanov@2:6078/1 to All on Mon Dec 4 18:43:34 2023

    Приветики, All!

    В общем пытаюсь тут вкрячить zoneminder на alt 10. С ним бяда - он для записи дает на выбор кодеки только h264 и h265,
    хотя в системе установлены туева куча других. У этих двух большая беда - они при работе съедают весь проц даже на один
    канал. а ffmpeg ситуация полностью воспроизводится.
    ffmpeg -f v4l2 -i /dev/video0 -vframes 1200 -codec $1 /storage/sdc1/output_$1.avi
    то же самое, при выборе libx264 не вытягивает даже 25 fps с аналогового источника. При этом отлично работают h263p и
    mpeg4 - загрузка цп меньше 10%, так что в теории мог бы и все 16 каналов затащить. о почему-то сабж упорно
    отказывается воспринимать что-либо другое.
    В принципе рассматривается вариант заменить сабж на что угодно. Основная задача - писать видео с локального источника
    (в теории - до 16 каналов), записывать непрерывно, чтобы можно было сетевым клиентом под эхотаг и под оффтопик
    смотреть в реальном времени и запись. Всякие фичи по анализу изображения типа детектор движения и прочее - не
    интересны. Бонусом приветствуется возможность кроме аналога подцепить айпишные камеры. Главное - писать в полном
    разрешении все каналы. Там того разрешения то кот наплакал, его еще уменьшать считаю неприемлимым.


    Hа сем разрешите письмо закончить. Elec (RA2FDR)
    --- NoSFeRaTU's GoldED+/W32-MINGW 1.1.5-b20090603
    * Origin: В свинарнике не стыдно быть свиньей (2:6078/1)
  • From Stanislav Vlasov@2:5080/172 to Dmitriy Romanov on Wed Dec 6 08:35:06 2023
    Привет, Dmitriy!

    04 Dec 23 18:43, Dmitriy Romanov -> All:

    заменить сабж на что угодно. Основная задача - писать видео с
    локального источника (в теории - до 16 каналов), записывать
    непрерывно, чтобы можно было сетевым клиентом под эхотаг и под
    оффтопик смотреть в реальном времени и запись. Всякие фичи по анализу изображения типа детектор движения и прочее - не интересны. Бонусом приветствуется возможность кроме аналога подцепить айпишные камеры. Главное - писать в полном разрешении все каналы. Там того разрешения
    то кот наплакал, его еще уменьшать считаю неприемлимым.

    Может, проще кучу vlc с автоподнятием по падению? Так точно можно записывать без перекодировки, если от камеры видеопоток идёт.

    С наилучшими пожеланиями, Stanislav.

    --- -.-.-.-.-.-
    * Origin: _-_-_-_-_- (2:5080/172)
  • From Andrey Mundirov@2:5059/38 to Stanislav Vlasov on Wed Dec 6 07:20:52 2023
    Здравствуй, Stanislav!

    Ответ на сообщение Stanislav Vlasov (2:5080/172) к Dmitriy Romanov, написанное 06 дек 23 в 08:35:

    Может, проще кучу vlc с автоподнятием по падению? Так точно можно записывать без перекодировки, если от камеры видеопоток идёт.

    VLC - штука рабочая, но несколько неудобная. Делал я как-то стриминг-сервер с ТВ тюнера. А потом переделал на ffmpeg, получилось лучше.

    С наилучшими пожеланиями, Andrey

    --- GoldED+/LNX 1.1.5-b20161221
    * Origin: PC Lovers (2:5059/38)
  • From Dmitriy Romanov@2:6078/1 to Andrey Mundirov on Wed Dec 6 15:41:20 2023

    Приветики, Andrey!


    Писал как-то Andrey Mundirov к Stanislav Vlasov примерно 06 Дек 23 в 07:20
    А я смотрю и фигею.


    Может, проще кучу vlc с автоподнятием по падению? Так точно можно
    записывать без перекодировки, если от камеры видеопоток идёт.

    VLC - штука рабочая, но несколько неудобная. Делал я как-то стриминг-сервер
    с ТВ тюнера. А потом переделал на ffmpeg, получилось лучше.
    А есть пример рабочей конфигурации с ffmpeg? Я пока не осилил сделать, чтобы он и стриминг и запись одновременно делал.
    В принципе идея неплохая. Меня устроит, если оно будет на сервере записывать, а на клиента только в реальном времени
    контент отдавать. А запись, случись что, можно уже взять с сервера вручную и посмотреть.

    Hа сем разрешите письмо закончить. Elec (RA2FDR)
    --- NoSFeRaTU's GoldED+/W32-MINGW 1.1.5-b20090603
    * Origin: В свинарнике не стыдно быть свиньей (2:6078/1)
  • From Andrey Mundirov@2:5059/38 to Dmitriy Romanov on Fri Dec 8 05:07:08 2023
    Здравствуй, Dmitriy!

    Ответ на сообщение Dmitriy Romanov (2:6078/1) к Andrey Mundirov, написанное 06 дек 23 в 15:41:


    VLC - штука рабочая, но несколько неудобная. Делал я как-то
    стриминг-сервер с ТВ тюнера. А потом переделал на ffmpeg,
    получилось лучше.
    А есть пример рабочей конфигурации с ffmpeg? Я пока не осилил сделать, чтобы он и стриминг и запись одновременно делал. В принципе идея
    неплохая. Меня устроит, если оно будет на сервере записывать, а на
    клиента только в реальном времени контент отдавать. А запись, случись
    что, можно уже взять с сервера вручную и посмотреть.

    Вот как-то так. ffmpeg захватывает, жмет и пишет на диск. А клиентам с диска раздает nginx.

    #!/bin/sh

    ROOT_DIR="/var/www/video"
    ARCHIVE_DIR=$ROOT_DIR/archive
    STREAM_DIR=$ARCHIVE_DIR/`date +%Y%m%d%H%M`

    mkdir "$STREAM_DIR" || exit 1

    CAPTURE_OPTIONS="-f video4linux2 -channel 1 -s 720x576 -i /dev/video0 -thread_queue_size 1024 -f alsa -ar 44100 -ac 2 -i hw:0,0"

    STREAM_OPTIONS="-f hls -vf crop=700:570:8:5 -c:a aac -ar 44100 -b:a 128k -c:v libx264 -g 48 -keyint_min 48 -b:v 1250k -maxrate 1600k -bufsize 3200k -pix_fmt yuv420p -hls_time 10 -hls_playlist_type event -hls_segment_filename $STREAM_DIR/video%04d.ts $STREAM_DIR/stream.m3u8"

    /opt/ffmpeg/bin/ffmpeg $CAPTURE_OPTIONS $STREAM_OPTIONS




    С наилучшими пожеланиями, Andrey

    --- GoldED+/LNX 1.1.5-b20161221
    * Origin: PC Lovers (2:5059/38)
  • From Dmitriy Romanov@2:6078/1 to Andrey Mundirov on Sun Dec 17 09:21:20 2023

    Приветики, Andrey!


    Писал как-то Andrey Mundirov к Dmitriy Romanov примерно 08 Дек 23 в 05:07
    А я смотрю и фигею.

    Вот как-то так. ffmpeg захватывает, жмет и пишет на диск. А клиентам с диска
    раздает nginx.

    #!/bin/sh

    ROOT_DIR="/var/www/video"
    ARCHIVE_DIR=$ROOT_DIR/archive
    STREAM_DIR=$ARCHIVE_DIR/`date +%Y%m%d%H%M`

    mkdir "$STREAM_DIR" || exit 1

    CAPTURE_OPTIONS="-f video4linux2 -channel 1 -s 720x576 -i /dev/video0 -thread_queue_size 1024 -f alsa -ar 44100 -ac 2 -i hw:0,0"

    STREAM_OPTIONS="-f hls -vf crop=700:570:8:5 -c:a aac -ar 44100 -b:a 128k -c:v libx264 -g 48 -keyint_min 48 -b:v 1250k -maxrate 1600k -bufsize 3200k -pix_fmt yuv420p -hls_time 10 -hls_playlist_type event -hls_segment_filename
    $STREAM_DIR/video%04d.ts $STREAM_DIR/stream.m3u8"

    /opt/ffmpeg/bin/ffmpeg $CAPTURE_OPTIONS $STREAM_OPTIONS

    Интересное решение, но есть несколько но.
    1. Как у него с задержкой? Я так понимяу, что задержка будет минимум на длину одного фрагмента. Чем длиннее фрагмент,
    тем больше задержка, а чем короче, тем потом неудобнее пользоваться сохраненным архивом.
    2. А будет ли оно работать, если вместо libx264 будет mpeg4 ? У меня все уперлось в эту проблему.
    Пока что изобразил решение на базе ffserver. о ни в одном браузере ни с одним плеером в mpeg4 не хочет показывать. Вот
    с libx264 - то пожалуйста сколько угодно. о у меня была первоочередная задача уйти от использования libx264 в любых
    его проявлениях, ибо у меня и в один то поток в реальном времени не тянет, а хотелось бы их 16 запихнуть. mpeg4
    прекрасно справляется с задачей, разве что при приемлимом качестве картинки объем несколько больше получается, но это
    решается экстенсивным апгрейдом простым добавлением диска.
    Так что на текущий момент остаются две задачи:
    1. Как научить ffserver воспринимать фильтры, в частности мне надо в момент перед кодированием наложить дату-время на
    видео. При записи - уже не вариант, это надо раскодировать поток и снова кодироать.
    2. Как в браузере отображать поток в mpeg4 а не в H264? Может какие плагины есть. Использовать отдельный плеер весьма
    неудобно в связи с тем, что надо одновременно на одном экране несколько потоков показывать, причем чтобы каждый раз не
    раскладывать плееры по экрану, а заранее сконфигурировать расположение, и чтобы при старте оно автоматом открывалось в
    нужной конфигурации.

    При этом задачу как вкрутить ffserver туда, где его не предусмотрено, ничего при этом не поломав, я уже осилил решить
    самостоятельно =)

    Hа сем разрешите письмо закончить. Elec (RA2FDR)
    --- NoSFeRaTU's GoldED+/W32-MINGW 1.1.5-b20090603
    * Origin: В свинарнике не стыдно быть свиньей (2:6078/1)
  • From Andrey Mundirov@2:5059/38 to Dmitriy Romanov on Mon Dec 18 06:27:40 2023
    Здравствуй, Dmitriy!

    Ответ на сообщение Dmitriy Romanov (2:6078/1) к Andrey Mundirov, написанное 17 дек 23 в 09:21:


    Интересное решение, но есть несколько но.
    1. Как у него с задержкой? Я так понимяу, что задержка будет минимум
    на длину одного фрагмента. Чем длиннее фрагмент, тем больше задержка,
    а чем короче, тем потом неудобнее пользоваться сохраненным архивом.

    Именно так оно и работает. В моем случае задержка была не критична, была задача раздать видео максимальному количеству пользователей. VLC вывозил максимум 20-30 юзеров, ffserver чуть больше, а nginx тянет сотню и больше потянул бы, но уже канала не хватает.

    2.
    А будет ли оно работать, если вместо libx264 будет mpeg4 ? У меня все уперлось в эту проблему. Пока что изобразил решение на базе ffserver.
    о ни в одном браузере ни с одним плеером в mpeg4 не хочет показывать.
    Вот с libx264 - то пожалуйста сколько угодно. о у меня была
    первоочередная задача уйти от использования libx264 в любых его проявлениях, ибо у меня и в один то поток в реальном времени не тянет,
    а хотелось бы их 16 запихнуть.

    Странно, что даже один поток не тянет. Core i7 1 поколения нормально справляется, теоретически должен даже 4 потока вывозить, по числу ядер. Или там разрешение большое и битрейт?

    С наилучшими пожеланиями, Andrey

    --- GoldED+/LNX 1.1.5-b20161221
    * Origin: PC Lovers (2:5059/38)
  • From Dmitriy Romanov@2:6078/1 to Andrey Mundirov on Mon Dec 18 14:29:04 2023

    Приветики, Andrey!


    Писал как-то Andrey Mundirov к Dmitriy Romanov примерно 18 Дек 23 в 06:27
    А я смотрю и фигею.

    2.
    А будет ли оно работать, если вместо libx264 будет mpeg4 ? У меня все
    уперлось в эту проблему. Пока что изобразил решение на базе ffserver.
    о ни в одном браузере ни с одним плеером в mpeg4 не хочет показывать.
    Вот с libx264 - то пожалуйста сколько угодно. о у меня была
    первоочередная задача уйти от использования libx264 в любых его
    проявлениях, ибо у меня и в один то поток в реальном времени не тянет,
    а хотелось бы их 16 запихнуть.

    Странно, что даже один поток не тянет. Core i7 1 поколения нормально справляется, теоретически должен даже 4 потока вывозить, по числу ядер. Или
    там разрешение большое и битрейт?
    Core2duo, 720*576*25fps. Даже если один поток и потянет, то мне это все равно мало. Меня бы mpeg4 вполне устроило, лишь
    бы клиенты могли его видеть. А клиентов тех от силы штук 5 наберется. о запись должна быть без ужатия по качеству, а
    то и так с аналоговой камеры хреново видно.

    Hа сем разрешите письмо закончить. Elec (RA2FDR)
    --- NoSFeRaTU's GoldED+/W32-MINGW 1.1.5-b20090603
    * Origin: В свинарнике не стыдно быть свиньей (2:6078/1)