Pull to refresh

Comments 24

А если повредится один фрагмент, то все видео накроется медным тазом?

Я, если честно, не специалист в видеоформатах, в том числе в webm, который большинство браузеров использует по умолчанию. Надо провести эксперимент, тогда и увидим. Писать можно, кстати, в разные контейнеры и с разыми кодеками, это все настраивается.

Я просто запускаю IP Webcam и забираю из него видеопоток ffmpeg'ом через SSH-туннель (впрочем, он умеет и сам файлы в облако отправлять, но файлы делит криво и я это не юзаю)


А ещё далеко не везде интернет достаточно хороший для видео, у меня скорость 4G сейчас всего 0.5 Мбит/с, видео особо не попередаёшь

Так решений полно, конечно. Но мне было интересно реализовать нативными, так сказать, средствами, без чужих приложений типа IP webcam.


По поводу скорости интернета — можно задать низкую частоту кадров, хоть 5 кадров в секунду, например. Тогда не видео получится фактически, а просто скоростная фотосъемка.

Тоже думал об этом, но мобильную разработку недолюбливаю.
Из дополнительных идей:
Отправка текста(если скорость не позволяет)/видео по заданным емейл, если не отзовешь в течение N времени.
Добавление GPS меток, номера sim-карты и imei.
Автоматическая переотправка при обнаружении сети (для варианта отобрали в лесу, приехали в город), а в идеале и при включении телефоне (для варианта отобрали в лесу, выключили, попал в другие руки в городе).
Отправка сообщения при движении.

Это, конечно, все отлично, вот только можно ли реализовать средствами javascript и АPI html5 в браузере? Ну геопозиционирование получить можно, а вот всё остальное… можно подумать ))

А не следует делать в браузере. Причины:
  1. Менее эффективный расход энергии;
  2. При блокировке экрана приложение уйдёт в фон;
  3. При переходе в фон и активном использовании сети Андроид может убить браузер или вытеснить его из оперативной памяти. Если этого не произойдёт, то будет уведомление, что браузер использует батарею, что может заинтересовать ушлых ребят.

Ваш текущий вариант не имеет обработки ошибок в случае возникновения таковых на сервере.

включить мобильный интернет (если он не включен у вас на телефоне постоянно);
Может всё же пусть приложение само пытается найти доступную WiFi сеть и/или мобильный интернет и автоматически включает их?

Достаточно просто сконкатенировать все файлы в один
Может нужно было инициализировать сессию и при съёмке в рамках одной сессии автоматически конкатенировать с помощью:
file_put_contents("video/".$flName, $data, FILE_APPEND | LOCK_EX);
?

$flName = date("ymd-His").".webm";
Нельзя использовать один и тот же сервер с этим скриптом одновременно с двух телефонов, иначе один видеофайл может перезаписаться другим. Используйте уникальный идентификатор (сессий, uuid) создавая директорию и размещая файл(ы) уже в ней.

То есть даже если хулиганы начали отбирать у вас телефон — вы успеваете нажать кнопку «стоп» и последний видеофайл уходит на сервер.
Мне кажется, что как раз во время попытки отобрать телефон и после этого начинается «всё самое интересное». Телефон должен и дальше снимать. Не останавливаясь.
Нельзя использовать один и тот же сервер с этим скриптом одновременно с двух телефонов

Я об этом и пишу постоянно в статье: предложенное решение — исключительно для личного использования, только со своего телефона. Это многое упрощает.
Может нужно было инициализировать сессию и при съёмке в рамках одной сессии автоматически конкатенировать

Я об этом думал, но идея не очень хорошая, так как в результате мы получим огромный файл на сервере, который замучаемся качать потом, особенно при нестабильном интернете.

Так идея состояла именно в том, чтобы написать браузерное нативное решение, а не мобильное приложение. Но я согласен, на предложенный скелет можно еще наращивать мясо.

А какой смысл писать браузерное «нативное» решение, если оно в любой момент может перестать работать из-за перехода в фон и при этом разные фичи нужно делать через костыли? Не понимаю. Мне кажется, что нужно выбирать тот инструмент, который наиболее подходит под задачу.
Задача состояла в том, чтобы написать простенький инструмент для личного пользования (с одного своего телефона) и исключительно для видеосъемки своими руками (никакого ухода браузера в фон). Этот инструмент и не претендует ни на что большее. Если потребуются дополнительные фичи, то, конечно, придется писать мобильное приложение.
Тема модная. В США правозащитники выбрали вариант сделать это в виде приложения: ACLU Mobile Justice Moon Prism Power.
ИМХО — это всё ДОЛГО.
Телефон еще надо разблокировать.
Пусть даже инет включен постоянно — может вылезти какая-нибудь фигня (обновление или еще что) и в критической ситуации это всё помешает незаметному включению записи.
У меня на телефоне есть бесполезная кнопка — её можно настроить на запуск приложения которое должно сразу писать в облако. Ну и куски по минуте — это очень долго. Надо по секунде. За секунду может много чего произойти.
Может такое уже есть? Пусть и платное, но хорошее.

Я искал, но ничего путного не нашел. IP-камер и систем видеонаблюдения много, но это немного не то, что нам нужно. Единственное — это разработка ребят из Иваново, на которую есть ссылка в начале статьи. Надо писать своё.


А про минуту и секунду не понял, если честно. Пишется всё, просто видео делится на минутные отрезки. Можно и секундные сделать, конечно, не проблема, но зачем?


Сразу писать в облако — это WebRTC, но это гораздо сложнее в реализации. Ну или, действительно, отправлять секундные отрезки и на сервере их конкатенировать.

Вышеупомянутый IP Webcam умеет выводить кнопку быстрого запуска на лаунчер, а также работать в фоне, лично мне он норм (хотя и не без недостатков)


Можно и секундные сделать, конечно, не проблема, но зачем?

Даже секундные куски это слишком долго. Случись что — телефон летит из рук на асфальт, аккумулятор улетает на два метра от девайса, и весь записанный кусок безвозвратно теряется. Так что — только захват RTSP-потока ffmpeg'ом через SSH-туннель :)

WebRTC здесь не нужен от слова совсем. Достаточно использовать вебсокеты.
Просто WebRTC как бы поддерживается браузерами из коробки, а для работы с сокетами на клиентской стороне придется использовать сторонние библиотеки. Понятно, что можно разные транспорты использовать, в том числе и сокеты, конечно, но не уверен, что это лучшее решение.
Для удобной работы с WebRTC тоже необходимы библиотеки. При этом без библиотек и с WebSocket вполне возможно работать, если нужно. И почему бы не использовать библиотеки? Тоже вопрос.

но не уверен, что это лучшее решение
Если казалось, что подойдёт WebRTC, то вебсокеты точно подойдут, учитывая, что WebRTC для совсем иных задач используется:
проект с открытым исходным кодом, предназначенный для организации передачи потоковых данных между браузерами или другими поддерживающими его приложениями по технологии точка-точка
для работы с сокетами на клиентской стороне придется использовать сторонние библиотеки.

Не понял? Он же прост как дубина, var ws = new WebSocket(), onconnect onmessage и вперёд. Никогда не использовал библиотеки для вебсокетов, ибо не вижу смысла (даже небезызвестный socket.io всегда игнорировал)

Да, с сокетами можно поиграться (именно для передачи потокового видео), надо попробовать на досуге.
телефон у вас отбирают (или изымают на законных основаниях — нужное подчеркнуть). Свидетелей нет, видеозаписи на телефоне больше нет, доказательств для полиции и суда тоже, соответственно, никаких
С практической точки зрения, эта запись не является доказательством в суде РФ — вспомните, было несколько видео про человека, который просто стоял у метро, а ему было предъявлено обвинение в нападении на ОМОН с заведением уголовного дела, и видео происшествия с телефонов не принималось судом как доказательство. Причем все по закону, поскольку средства аудио- и видеофиксации должны иметь сертификацию и поверку, в смысле, бумажку, что видеокамера прошла сертификацию и поверку, практического смысла в этом не больше, чем в бумажке Ростеста для телефонов.
Так что выложить в Ютуб для привлечения внимания к своей проблеме — можно, в остальном — в РФ годится только для административных (типа автоаварии), а не уголовных дел. Лучше понимать это сразу и приоритетно озаботиться поиском свидетелей с места происшествия, а не сохранением видеозаписи. Хотя при прочих равных — видеозапись лишней не будет.
средства аудио- и видеофиксации должны иметь сертификацию и поверку, в смысле, бумажку, что видеокамера прошла сертификацию и поверку

Насколько я понимаю, в законе такой нормы нет (поправьте меня, если я ошибаюсь). Зато есть такое понятие как «оценка доказательств» судом. То есть все отдано на откуп судье: захочет — примет это как доказательство, не захочет — не примет. На том же ютубе достаточно много видео, в которых суд просматривает записи, снятые мобильными телефонами, и принимает их в качестве доказательства.
Открывать же браузер, а затем нажимать на значок домика (если вы установили написанное в качестве домашней страницы) довольно долго.
Выход очень прост: создаем в файловой системе телефона простенький файлик alarm.html:

Можно ещё оформить как pwa приложение.
Sign up to leave a comment.

Articles