Автор Тема: Использование как видеорегистратор  (Прочитано 1586 раз)

Admin

  • Администратор
  • Пользователь
  • *****
  • Сообщений: 65
    • Просмотр профиля
В этой теме хотелось бы описать способ использования Orange Pi (PС) для видео- и звукозаписи,
найти способы оптимизации, услышать мнения/подсказки от шарящих.

1. Операционная система
За основу взята Ubuntu wily mini - как наиболее удобная и небольшая, но для других описанные действия будут аналогичными.

2. Аппаратное обеспечение
Orange Pi PС, USB-вебка или CSI-камера

3. Программное обеспечение
для кодирования использую ffmpeg

apt-get update && apt-get install ffmpeg

Скрипт, который создает в заданной папке видеоролики, именуя их текущей датой-временем:

#!/bin/sh
rm /tmp/*.mp4 /tmp/*.m4a
NKK_TM=120
NKK_DIR=/home/orangepi/
while [ 1 ]
do
NKK_DATE=`date +"%Y-%m-%d-%H-%M-%S"`
ffmpeg -loglevel error -f alsa -i hw:0 -t $NKK_TM -ac 1 -ar 44100 -strict experimental -b:a 64k /tmp/$NKK_DATE.m4a &
ffmpeg -loglevel error -f v4l2 -video_size 640x480 -i /dev/video0 -c:v libx264 -t $NKK_TM -preset fast -crf 25 /tmp/$NKK_DATE.mp4
ffmpeg -loglevel error -i /tmp/$NKK_DATE.mp4 -i /tmp/$NKK_DATE.m4a -c copy $NKK_DIR$NKK_DATE.mp4 && rm /tmp/$NKK_DATE.mp4 /tmp/$NKK_DATE.m4a &
done


NKK_TM=120 - продолжительность каждого ролика в секундах;
NKK_DIR=/home/orangepi/ - путь (со слэшем на конце!), по которому будут созданы файлы;
-b:a 64k - битрейт аудио, по вкусу;
-crf 25 - качество видео, по вкусу, в зависимости от крутизны камеры.

4. Вопросы по доработке
1. Файлы, создаваемые в папке /tmp/, физически размещаются в оперативной памяти? Можно ли тут что-то оптимизировать?
2. Как отправить сигнал и отследить событие завершение вечного цикла записи?
3. Как определить, отследить и выйти из цикла до переполнения дискового пространства?
4. Возможно, еще как-то управлять процессом: что вообще еще может потребоваться от видеорегистратора?
5. Как еще можно оптимизировать кодеки, настройки аппаратного обеспечения для бОльшей производительности с мЕньшим энергопотреблением, может, как-то Mali задействовать?
6. Можно как-то эту команду в одну строку записать, а то по отдельности кодирование аудио, видео, мотом муксинг - как-то некрасиво выглядит.
« Последнее редактирование: 05 ЅЮпСам 2016, 17:22:49 от Admin »

igzero

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Использование как видеорегистратор
« Ответ #1 : 09 ёоЫм 2018, 16:32:05 »
Посмотри мои исходники, у меня все там реализовано это (проект CarPC) описание здесь, исходники здесь, образ здесь

igzero

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Использование как видеорегистратор
« Ответ #2 : 09 ёоЫм 2018, 17:40:09 »
......пропущено
4. Вопросы по доработке
1. Файлы, создаваемые в папке /tmp/, физически размещаются в оперативной памяти? Можно ли тут что-то оптимизировать?
2. Как отправить сигнал и отследить событие завершение вечного цикла записи?
3. Как определить, отследить и выйти из цикла до переполнения дискового пространства?
4. Возможно, еще как-то управлять процессом: что вообще еще может потребоваться от видеорегистратора?
5. Как еще можно оптимизировать кодеки, настройки аппаратного обеспечения для бОльшей производительности с мЕньшим энергопотреблением, может, как-то Mali задействовать?
6. Можно как-то эту команду в одну строку записать, а то по отдельности кодирование аудио, видео, мотом муксинг - как-то некрасиво выглядит.
Как у сделал я (согласно твоим пунктам)
1. Сюда и пишу
2. Поэтому в фоне (fork) запущена функция своего рода watchdog, которая по прошествию установленного времени записи ролика (ролики пишутся у меня по времени а не по размеру), запускает запись нового ролика в /tmp, а предыдущий записывает на диск
3. Запись на диск в виде кольцевого массива, за свободным местом следит отдельный процесс. Если места остается меньше или равно чем двойной размер одного ролика, то удаляется самый первый (самый старый) записанный ролик.
4. У меня на видео накладывается время, скорость и текущие координаты. Хорошо бы прикрутить акселлерометр (у меня это было в планах), отслеживающий мнгновенное ускорение, если такой факт есть, то отметить (или скопировать в другое место) как нестираемые ролики, в интервале N-минут до  и N-минут после возникновения этого прерывания.
5. а) Естественно очень желательна поддержка HW VIDEO б) писать свои функции для работы с камерой
6. Лучше писать (IMHO) на С (про ASM молчу :-) ), что позволяет оптимизировать работу с памятью системы и прочие вытекающие отсюда возможности по оптимизации работы с видео и системой в целом.