Софтодром   
Windows Программы для Windows
Linux Программы для Linux
Android Приложения для Android
iOS Приложения для iPhone

Новости  Форумы

Программист Google объяснил странную дату создания видеоролика СБУ багом в стандарте MPEG-4



Новости    Интернет


Программист Google объяснил странную дату создания видеоролика СБУ


Программист Анатолий Воробей, который, согласно его профилю в LiveJournal, работает в отделении Google в Тель-Авиве, куда он приехал в 91-м году в возрасте 15 лет, а до этого жил на Украине в городе Житомире, опубликовал в своем блоге пост, в котором объяснил странную дату создания широко обсуждаемого в СМИ разоблачительного ролика СБУ багом в стандарте MPEG-4. Вот, что он пишет:

«Если вы следите за кризисом в Украине и в частности за падением малазийского "Боинга", то заметили, наверное, что украинское СБУ опубликовало запись переговоров сепаратистов вскоре после падения самолета. Видео была закачано на канал СБУ в Ютюбе всего через несколько часов после падения самолета. Люди заметили, что если скачать с Ютюба это видео, а потом посмотреть на видеофайл в какой-нибудь программе, которая показывает метаданные, то "дата создания" в файле оказывается 16-го июля, т.е. днем раньше собственно падения. Причем это не может быть разница в часовых поясах, потому что время почти на 24 часа раньше падения; отсюда люди заключили, что это доказательство того, что СБУ сделало фальшивые записи еще до катастрофы. Правда, другие люди вскоре заметили, что Ютюб поступает так с любым видео, которое в него загружают, и это видимо баг в Ютюбе. Так что теперь волнами по сети и оффлайновым СМИ расходятся разоблачение СБУ и разоблачение разоблачения.

Кажется, я разобрался, что это за баг. В видеоформате mp4 (стандарт MPEG-4) есть возможность записать "время создания" любого потока данных, с помощью специальной метки. Значение этой метки в стандарте - кол-во секунд, прошедших с 1 января 1904 года, или так называемое "время по эпохе макинтоша", потому что маки первыми стали использовать такой отсчет времени. Меж тем в современных серверах намного проще иметь дело с "временем по эпохе Юникса", а именно кол-вом секунд, прошедших с 1 января 1970 года. В результате этого во множестве программ, которые работают на Линуксе или других юниксовских операционных системах, есть кусок кода, который выглядит примерно так:

- получить "время сейчас по юниксу";
- добавить разницу между временем по юниксу и временем по макинтошу - это некая константа;
- полученное "время сейчас по макинтошу" записать в файл mp4, который мы создаем.

Чему равна константа "разница между временем по юниксу и временем по макинтошу"? Она равна в точности числу секунд, прошедших между 1 января 1904 и 1 января 1970. Это 66 лет, из которых 17 были високосными (проверьте, если не доверяете мне). Всего дней получается: 66*365+17 = 24107, а секунд, учитывая 86400 секунд в сутках: 24107*86400 = 2082844800. Это правильное значение константы.

Но есть маленькая крохотная незаметная проблемка. Часть стандарта MPEG-4 - исходники библиотек, которые умеют читать и писать mp4-файлы, так называемое "reference software" на C++, которым все могут пользоваться, чтобы позаимствовать или сравнить со своим кодом. Полное название этой части стандарта - "ISO/IEC 14496-5". Если вам интересно, вы можете скачать эту часть стандарта бесплатно с официального сайта. И если вы посмотрите на исходники, то увидите, что там используется другое значение этой константы, а именно 2082758400. Это ровно на 86400 секунд, то есть на одни сутки, меньше правильного значения.

Как случилось, что создатели MPEG-4 неправильно посчитали разницу между двумя датами? Может, кто-то вручную считал високосные годы и ошибся? Не знаю. Так или иначе, неправильное значение из-за его присутствия в стандарте попало во множество библиотек для чтения и записи видеоформатов. Постепенно в последние годы правильное значение начинает его сменять; если вы поищете в гугле оба числа, то увидите несколько точных описаний проблемы в исходниках нескольких проектов: "стандарт предлагает использовать 2082758400, но правильное значение 2082844800". В других проектах правильное значение стоит просто потому, что они сами посчитали, исходя из определений эпох, а не пользовались исходниками из стандарта.

Если в библиотеке, которая создает для вас mp4-файл, записано неправильное значение, то что произойдет, когда она захочет записать время "сейчас"? Она возьмет правильное число секунд по юниксу, добавит константу на сутки меньше, чем надо, и получит тем самым число секунд, согласно эпохе макинтоша, которое соответствует времени на сутки раньше. Я послал описание проблемы и решения разработчикам Ютюба, и надеюсь, что вскоре этот баг исчезнет.»


Автор: Softodrom.ru
Дата:

Новое: Интернет
22.04.2024 20:17

Вышел трейлер фильма «Дэдпул и Росомаха»

Кинокомпания Marvel Studios представила трейлер американского супергеройского фильма «Дэдпул и Росомаха»


22.04.2024 16:37

На Госуслугах появятся электронные студенческие билеты и зачётные книжки

Их можно будет использовать наравне с бумажными, постановление об этом подписало правительство РФ


21.04.2024 10:34

У основателя Telegram Павла Дурова нашли ошибки в английском языке

Одной из заметных ИТ-новостей прошедшей недели стало интервью основателя соцсети «ВКонтакте» и мессенджера Telegram Павла Дурова, которое он дал бывшему ведущему телеканала Fox News Такеру Карлсону


19.04.2024 12:49

Киносети отказались от пиратских фильмов после ультиматума прокатчиков

Из афиш крупных российских сетей кинотеатров практически исчезло так называемое предсеансное обслуживание — в последние два года это был популярный формат показа фильмов ушедших из России голливудских киностудий


17.04.2024 11:42

В Казахстане 447 школ обеспечили интернетом с помощью терминалов Starlink

После установки терминалов Starlink средняя скорость интернета в школах достигает 200 Мбит/с, отметили в Минцифры Казахстана


Популярное: Интернет
03.01.2023 17:02

Как опубликовать свою статью на Софтодроме

Если вы хотите опубликовать свою статью на Софтодроме, то рассказываем о том, какие статьи нам нужны


25.12.2023 14:13

Суд отправил жительницу Петербурга в психбольницу за фейки про армию в соцсети

Калининский районный суд Санкт-Петербурга вынес приговор местной жительнице за фейки в соцсети «ВКонтакте»


26.12.2023 18:10

Доходы пиратов выросли на 71% после ухода Netflix и Голливуда

На фоне роста нелегальных сервисов официальные аудио- и видеостриминговые сервисы находятся в стагнации, отмечают аналитики


27.12.2023 13:09

Фильм «Догмен» Люка Бессона выйдет в российских онлайн-кинотеатрах

Российская премьера нового фильма «Догмен» режиссера Люка Бессона состоится в онлайн-кинотеатрах, но в прокат в обычных кинотеатрах фильм в России не выйдет


24.12.2023 16:49

Ведущий шахматный портал заблокировал Крамника за критику в свой адрес

Российский шахматист в очередной раз раскритиковал руководство платформы из-за отсутствия серьезных мер по борьбе с читерством



Ищете, где скачать бесплатные программы?

Скачать бесплатные программы для компьютера на Windows и смартфона на iOS или Android можно на Софтодроме. На данный момент в каталоге Софтодрома представлено более 13 000 бесплатных программ для Windows, iOS, Android и Linux.
Все рубрики статей (3443 / 116):


Программы для Windows | Приложения для Android | Приложения для iPhone | Программы для Linux
Статистика | Рейтинги | Авторам | Рассылки
Copyright © 1999-2024 Softodrom.ru
Реклама | О проекте | О перепечатках | Пользовательское соглашение | Политика конфиденциальности | Карта сайта