Запись видео с камер: различия между версиями

Материал из IT в школе
Перейти к навигацииПерейти к поиску
нет описания правки
Строка 31: Строка 31:
SEGMENT=3600
SEGMENT=3600


ffmpeg -i ${CAMURL} -vcodec copy -acodec copy -map 0 -t ${LEN} -f segment -segment_time ${SEGMENT} -segment_format mp4 ${FILE} >/dev/null 2>/dev/null &
ffmpeg -i ${CAMURL} -vcodec copy -acodec copy -map 0 -t ${LEN} -f segment -segment_time ${SEGMENT} -segment_format mp4 ${FILE} &>/dev/null &
</syntaxhighlight>
</syntaxhighlight>
Пояснение: знак & в конце означает запустить программу и выйти в shell - то есть по сути сделать программу резидентной или демоном. НО! это работает долго  только если программа ничего не выводит (иначе при закрытии shell, когда некуда будет выводить, команда закроется). Чтобы этого не происходило, вывод перенаправлен в /dev/null - то  есть в пустоту. Обратите внимание, Linux имеет два выводных потока - обычный, так называемый stdout и ошибок  stderr. И перенаправлять надо оба, что и сделано. Если есть желание почитать что выводит программа, можно перенаправить вывод в файл (только чтобы он был в каталоге, доступном для записи)  
Пояснение: знак & в конце означает запустить программу и выйти в shell - то есть по сути сделать программу резидентной или демоном. НО! это работает долго  только если программа ничего не выводит (иначе при закрытии shell, когда некуда будет выводить, команда закроется). Чтобы этого не происходило, вывод перенаправлен в /dev/null - то  есть в пустоту. Обратите внимание, Linux имеет два выводных потока - обычный, так называемый stdout и ошибок  stderr. И перенаправлять надо оба, что и сделано (можно перенаправить по-отдельности так: ... 1>/dev/null 2>/dev/null ...). Если есть желание почитать что выводит программа, можно перенаправить вывод в файл (только чтобы он был в каталоге, доступном для записи)  


Если процесс запускается на сервере через ssh, то следует знать об особенности запуска процессов от пользователя, который собирается после запуска разлогиниться. В Альтлинукс и МОС процессы, запущенные пользователем останавливаются при выходе этого пользователя. В случае, если Вы собираетесь запустить и разлогиниться, для корректного функционирования записи эту особенность поведения (она зависит от дистрибутива Linux) надо заблокировать. для этого нужно установить пакет systemd-settings-disable-kill-user-processes.
Если процесс запускается на сервере через ssh, то следует знать об особенности запуска процессов от пользователя, который собирается после запуска разлогиниться. В Альтлинукс и МОС процессы, запущенные пользователем останавливаются при выходе этого пользователя. В случае, если Вы собираетесь запустить и разлогиниться, для корректного функционирования записи эту особенность поведения (она зависит от дистрибутива Linux) надо заблокировать. для этого нужно установить пакет systemd-settings-disable-kill-user-processes.

Навигация