Comments 24
А если повредится один фрагмент, то все видео накроется медным тазом?
Я просто запускаю IP Webcam и забираю из него видеопоток ffmpeg'ом через SSH-туннель (впрочем, он умеет и сам файлы в облако отправлять, но файлы делит криво и я это не юзаю)
А ещё далеко не везде интернет достаточно хороший для видео, у меня скорость 4G сейчас всего 0.5 Мбит/с, видео особо не попередаёшь
Так решений полно, конечно. Но мне было интересно реализовать нативными, так сказать, средствами, без чужих приложений типа IP webcam.
По поводу скорости интернета — можно задать низкую частоту кадров, хоть 5 кадров в секунду, например. Тогда не видео получится фактически, а просто скоростная фотосъемка.
Тоже думал об этом, но мобильную разработку недолюбливаю.
Из дополнительных идей:
Отправка текста(если скорость не позволяет)/видео по заданным емейл, если не отзовешь в течение N времени.
Добавление GPS меток, номера sim-карты и imei.
Автоматическая переотправка при обнаружении сети (для варианта отобрали в лесу, приехали в город), а в идеале и при включении телефоне (для варианта отобрали в лесу, выключили, попал в другие руки в городе).
Отправка сообщения при движении.
Это, конечно, все отлично, вот только можно ли реализовать средствами javascript и АPI html5 в браузере? Ну геопозиционирование получить можно, а вот всё остальное… можно подумать ))
- Менее эффективный расход энергии;
- При блокировке экрана приложение уйдёт в фон;
- При переходе в фон и активном использовании сети Андроид может убить браузер или вытеснить его из оперативной памяти. Если этого не произойдёт, то будет уведомление, что браузер использует батарею, что может заинтересовать ушлых ребят.
Ваш текущий вариант не имеет обработки ошибок в случае возникновения таковых на сервере.
включить мобильный интернет (если он не включен у вас на телефоне постоянно);Может всё же пусть приложение само пытается найти доступную WiFi сеть и/или мобильный интернет и автоматически включает их?
Достаточно просто сконкатенировать все файлы в одинМожет нужно было инициализировать сессию и при съёмке в рамках одной сессии автоматически конкатенировать с помощью:
file_put_contents("video/".$flName, $data, FILE_APPEND | LOCK_EX);
?Нельзя использовать один и тот же сервер с этим скриптом одновременно с двух телефонов, иначе один видеофайл может перезаписаться другим. Используйте уникальный идентификатор (сессий, uuid) создавая директорию и размещая файл(ы) уже в ней.$flName = date("ymd-His").".webm";
То есть даже если хулиганы начали отбирать у вас телефон — вы успеваете нажать кнопку «стоп» и последний видеофайл уходит на сервер.Мне кажется, что как раз во время попытки отобрать телефон и после этого начинается «всё самое интересное». Телефон должен и дальше снимать. Не останавливаясь.
Нельзя использовать один и тот же сервер с этим скриптом одновременно с двух телефонов
Я об этом и пишу постоянно в статье: предложенное решение — исключительно для личного использования, только со своего телефона. Это многое упрощает.
Может нужно было инициализировать сессию и при съёмке в рамках одной сессии автоматически конкатенировать
Я об этом думал, но идея не очень хорошая, так как в результате мы получим огромный файл на сервере, который замучаемся качать потом, особенно при нестабильном интернете.
Так идея состояла именно в том, чтобы написать браузерное нативное решение, а не мобильное приложение. Но я согласен, на предложенный скелет можно еще наращивать мясо.
Телефон еще надо разблокировать.
Пусть даже инет включен постоянно — может вылезти какая-нибудь фигня (обновление или еще что) и в критической ситуации это всё помешает незаметному включению записи.
У меня на телефоне есть бесполезная кнопка — её можно настроить на запуск приложения которое должно сразу писать в облако. Ну и куски по минуте — это очень долго. Надо по секунде. За секунду может много чего произойти.
Может такое уже есть? Пусть и платное, но хорошее.
Я искал, но ничего путного не нашел. IP-камер и систем видеонаблюдения много, но это немного не то, что нам нужно. Единственное — это разработка ребят из Иваново, на которую есть ссылка в начале статьи. Надо писать своё.
А про минуту и секунду не понял, если честно. Пишется всё, просто видео делится на минутные отрезки. Можно и секундные сделать, конечно, не проблема, но зачем?
Сразу писать в облако — это WebRTC, но это гораздо сложнее в реализации. Ну или, действительно, отправлять секундные отрезки и на сервере их конкатенировать.
Вышеупомянутый IP Webcam умеет выводить кнопку быстрого запуска на лаунчер, а также работать в фоне, лично мне он норм (хотя и не без недостатков)
Можно и секундные сделать, конечно, не проблема, но зачем?
Даже секундные куски это слишком долго. Случись что — телефон летит из рук на асфальт, аккумулятор улетает на два метра от девайса, и весь записанный кусок безвозвратно теряется. Так что — только захват RTSP-потока ffmpeg'ом через SSH-туннель :)
но не уверен, что это лучшее решениеЕсли казалось, что подойдёт WebRTC, то вебсокеты точно подойдут, учитывая, что WebRTC для совсем иных задач используется:
проект с открытым исходным кодом, предназначенный для организации передачи потоковых данных между браузерами или другими поддерживающими его приложениями по технологии точка-точка
для работы с сокетами на клиентской стороне придется использовать сторонние библиотеки.
Не понял? Он же прост как дубина, var ws = new WebSocket(), onconnect onmessage и вперёд. Никогда не использовал библиотеки для вебсокетов, ибо не вижу смысла (даже небезызвестный socket.io всегда игнорировал)
телефон у вас отбирают (или изымают на законных основаниях — нужное подчеркнуть). Свидетелей нет, видеозаписи на телефоне больше нет, доказательств для полиции и суда тоже, соответственно, никакихС практической точки зрения, эта запись не является доказательством в суде РФ — вспомните, было несколько видео про человека, который просто стоял у метро, а ему было предъявлено обвинение в нападении на ОМОН с заведением уголовного дела, и видео происшествия с телефонов не принималось судом как доказательство. Причем все по закону, поскольку средства аудио- и видеофиксации должны иметь сертификацию и поверку, в смысле, бумажку, что видеокамера прошла сертификацию и поверку, практического смысла в этом не больше, чем в бумажке Ростеста для телефонов.
Так что выложить в Ютуб для привлечения внимания к своей проблеме — можно, в остальном — в РФ годится только для административных (типа автоаварии), а не уголовных дел. Лучше понимать это сразу и приоритетно озаботиться поиском свидетелей с места происшествия, а не сохранением видеозаписи. Хотя при прочих равных — видеозапись лишней не будет.
средства аудио- и видеофиксации должны иметь сертификацию и поверку, в смысле, бумажку, что видеокамера прошла сертификацию и поверку
Насколько я понимаю, в законе такой нормы нет (поправьте меня, если я ошибаюсь). Зато есть такое понятие как «оценка доказательств» судом. То есть все отдано на откуп судье: захочет — примет это как доказательство, не захочет — не примет. На том же ютубе достаточно много видео, в которых суд просматривает записи, снятые мобильными телефонами, и принимает их в качестве доказательства.
Открывать же браузер, а затем нажимать на значок домика (если вы установили написанное в качестве домашней страницы) довольно долго.
Выход очень прост: создаем в файловой системе телефона простенький файлик alarm.html:
Можно ещё оформить как pwa приложение.
Видеозапись в облако своими руками