Архив рубрики: Екатеринбург

Автомобильный видеорегистратор для записи GPS-треков

Перед отпуском приобрёл видеорегистратор Mystery MDR-970HDG — помимо записи в видеофайл того, что находится перед его объективом, он может определять своё положение по GPS-спутникам. В инструкции описано, как смотреть получившиеся файлы специальным видеоплеером (под Windows, разумеется), который должен показывать помимо картинки и место, где она была снята, но это — не наш метод. Нам нужен трек!

Расковыривание собранных данных показало:

1. В качестве контейнера для видеороликов используется QuickTime — каталог DCIM/100MEDIA заполнен файлами FILE№№№№.MOV, кодек для видео — H.264. Для преобразования в MP4 можно применять FFMPEG:

ffmpeg -i FILE0123.MOV  -f mp4 -vcodec copy -acodec copy 0123.mp4

2. Геоданные хранятся в текстовом виде — нет нужды ковырять видеофайлы в надежде извлечь координаты оттуда. С одной стороны, на карте памяти есть каталог GPSLog, в который сваливаются файлы с именами вида YYYYmmdd_HHMMSS.log, каждый их которых — текстовый, по строке на точку, поля разделены символами табуляции:

2017-07-27 19:07:46	N56.254678	E59.273161	313.4	38.72	345

Можно легко догадаться, что за поля здесь представлены — это время, широта, долгота, высота над уровнем моря в местах, скорость в километрах в час и курс в градусах. Так как регистратор смотрит вперёд, то курс можно считать совпадающим с направлением взгляда — этот параметр как только не называют: то Heading, то Bearing, то ImgDirection.

Есть и другое место — в DCIM/INFO для каждого видеофрагмента можно найти соответствующий файл FILE№№№№.dat, также являющийся текстовым с полями, разделёнными символом табуляции. Там тоже можно найти координаты:

[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[G]	2017-07-20 18:41:10	N56.740461	E60.735576	38	222

Похоже, строки, начинающиеся с [S], отписывают кадры, а те, в первом поле которых стоит [G] — геоданные. В таких файлах нет данных о высоте, да и скорость округлена до целого.

3. Эксперименты по скармливанию файлов GPSLog/*.log ГПСБабелю ничего не дали: среди различных текстовых форматов, которые знает GPSBabel, не нашлось подходящего. Пришлось по-быстрому написать свой конвертер и выложить на GitHub, чтоб не забыть довести до ума — там надо бы с часовыми поясами разобраться.

4. Трек за городом пишется весьма точно — куда лучше, чем телефоном. Например, на этой картинке (здесь трек наложен на карту OpenStreetMap) видно, и что трек идёт по дорогам, и что часть пути прошла по встречной проезжей части (своя закрыта на ремонт)

Трек по подъезду к Екатеринбургу

А вот в городе всё не так хорошо — треки иногда на сотни метров сдвинуты во дворы

Трек по Челябинску

Вывод: видеорегистратор Mystery MDR-970HDG вполне можно использовать в качестве GPS-логгера, но треки, добытые в условиях плотной городской застройки, надо фильтровать.

Местное время

Пара наблюдений относящихся к встроенной перловой функции localtime:

Код на перле

  1. Заданное в секундах с начала эпохи время вполне может быть отрицательным — то есть можно работать с датами до 1 января 1970 года.
  2. Разница между местным временем, возвращаемым функцией localtime и временем по Гринвичу (функция gmtime) непостоянна. Само по себе это не удивительно — существует же кое-где до сих пор летнее время. Удивительнее другое: разница эта, если залезть поглубже, иногда не является целым числом часов — можно проверить, например, как менялась она начиная с 1900 года:
#!/usr/bin/perl

use POSIX qw( strftime );

my $SEC_PER_DAY = 24*60*60;
my $old_time = '';

for my $day ( -25567 .. 0 ) {
    my @moment = localtime( $day * $SEC_PER_DAY );
    my $time   = strftime '%X', @moment; # HH:MM:SS
    if ( $old_time ne $time ) {
        printf
            "%s %s\n",
            strftime( '%x', @moment ),
            $time;
        $old_time = $time;
    }
}

Результат неожиданный:

  • 01.01.1900 04:02:33
  • 03.07.1916 03:45:05
  • 16.07.1919 04:00:00
  • 21.06.1930 05:00:00

и не всегда понятный: если 04:02:33 ещё как-то можно объяснить — это время соответствует долготе 60,6375° в. д. — пара километров от нынешнего центра Екатеринбурга, то 03:45:05 откуда? Ближайший крупный город с долготой 56,2708° в. д. — Пермь. Что-то я сильно сомневаюсь, что в дореволюціонномъ Челябинске действовало пермское время.

Мимо кассы

В субботу, 28 марта в Екатеринбурге в Свердловской государственной детской филармонии прошёл окружной этап Всероссийского хорового фестиваля. Конкурс проходил по четырём номинациям, оценивались отдельно детские и взрослые коллективы, профессионалы и любители; разделения по составу хоров не было: и смешанные хоры, и однородные оценивались в одной номинации. Среди взрослых любительских коллективов два мужских хора получили дипломы лауреатов третьей степени — это наш хор Русского культурного центра города Челябинска и озёрский хор ДК «Маяк». Звание лауреата второй степени не присуждалось. Лауреатами первой степени стал смешанный студенческий хор Уральского федерального университета — они и поедут в мае в Москву.

Во время фестиваля велась прямая интернет-трансляция концертов, а записи через несколько дней должны появиться на http://youtube.com/channel/UC2fDd74Ekl83z_asV1076NQ

Репетиция
Мужской хор Русского культурного центра города Челябинска.
Фото Сергея Неверова

В центр города Е и обратно

Ув. тов. френды!

Уверен, что среди вас есть такие, кто регулярно мотается меж Челябинском и Екатеринбургом. Наверное, есть и те, кого часто заносит в центр Екатеринбурга. Сам я что-то давно в городе Е не был — кажется, уже год. Не по пути…

Есть задача — доставить фотоаппарат Nikon D40 (тушка невелика и весит немного) в ближайший сервисный центр по адресу Екатеринбург, улица Куйбышева, 55 (метро «Геологическая», открыты с понедельника до пятницы, с 10.00 до 18.00 без перерыва, телефон (343) 351-10-85). Я звонил им, уточнял — они чинят сами. В челябинских авторизованных сервисных центрах говорят, что могут только отослать в Москву. Вариант с ближайшим фотомехаником вместо авторизованного центра не подходит — у него нет запчастей.

Кому по пути — помогите, пожалуйста! Передайте аппарат в ремонт и обратно.

[map]56.82695,60.59887(улица Куйбышева, 55)[/map]