У меня есть несколько IP-камер, с которых я хочу непрерывно снимать видео. Я создаю сценарий, который будет охватывать ffmpeg для захвата из различных источников RTSP. Но я борюсь с тем, как захватывать и хранить данные ... в частности, как мне захватывать бесшовные клипы?
Чтобы уточнить, если я просто запустить команду, как это:
ffmpeg -i rtsp://ip_cam file.mp4
Это будет работать вечно, пока не заполнит мой жесткий диск (или пока я не достигну некоторого верхнего предела ffmpeg или файловой системы). Поэтому я подумал сделать что-то вроде этого:
ffmpeg -i rtsp://ip_cam -fs 104857600 file-1.mp4
Это ограничит файлы до 100 МБ каждый. Мой скрипт-обертка может запустить новый экземпляр, как только закончится этот:
ffmpeg -i rtsp://ip_cam -fs 104857600 file-2.mp4
И так далее (у меня может быть отдельный процесс, который будет очищать старые файлы по мере необходимости, чтобы освободить место). Проблема с этим подходом состоит в том, что для запуска ffmpeg требуется 1-2 секунды, что означает , что в течение этого времени рассматриваемая камера ничего не записывает.
Еще одна вещь, которую следует учитывать, это то, что для каждого файла мне нужно знать метки времени начала и окончания, например, file-1.mp4
может ссылаться на «2015-09-12 09:03:42» до «2015-09- 12 11:24:21 ". Таким образом, если пользователь хочет получить определенный клип, я знаю, где его получить. И если я запускаю ffmpeg для каждого клипа, а затем он заканчивается в конце каждого клипа, я могу записать и сохранить эту информацию. Но если предложенный подход заключается в указании ffmpeg работать бесконечно, сохраняя вывод в отдельных блоках (если ffmpeg может это сделать), это может не сработать, так как я не смогу собрать эту информацию.
Любое понимание будет оценено.