Показать сообщение отдельно
  #6  
Старый 17.12.2023, 11:51
Dmitriy Romanov
Guest
 
Сообщений: n/a
По умолчанию zoneminder и кодеки

Dmitriy Romanov написал(а) к Andrey Mundirov в Dec 23 09:21:20 по местному времени:


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


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

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

AM> #!/bin/sh

AM> ROOT_DIR="/var/www/video"
AM> ARCНIVEDIR=$ROOTDIR/archive
AM> STREAMDIR=$ARCНIVEDIR/`date +%Y%m%d%Н%M`

AM> mkdir "$STREAM_DIR" || exit 1

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

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

AM> /opt/ffmpeg/bin/ffmpeg $CAPTUREOPTIONS $STREAMOPTIONS

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

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

На сем разрешите письмо закончить. Elec (RA2FDR)
--- NoSFeRaTU's GoldED+/W32-MINGW 1.1.5-b20090603
Ответить с цитированием