1092
Січень 1, 1904, 1970, Youtube, Міжнародний конфлікт і кроковані руки
На жаль, в темі-посилання зникнуть, але іноді є надзвичайно цікаві речі, які в першу чергу використовуються. Рекомендую посаду Анатолія Воробей (робота розробника в Google).
У форматі MP4 відео (MPEG-4), можна записувати «час створення» будь-якого потоку даних за допомогою спеціальної етикетки. Значення даної етикетки в стандарті: кількість секунд, які клаплися з 1 січня 1904 р. або так званого «Максинтошого часу», тому що маки вперше використовували такий відлік. Тим не менш, в сучасних серверах набагато простіше боротися з «розумом», а саме кількість секунд, які лягли з 1 січня 1970 року. У результаті багато програм, які працюють на Linux або інших операційних системах Unix, мають шматок коду, який виглядає щось схоже на це:
Але є крихітна, тонка проблема. Частина стандарта MPEG-4 є вихідними бібліотеками, які можуть читати і писати mp4 файли, так посилання на програмне забезпечення в C++, які кожен може використовувати для запозичення або порівняти з їх кодом. Повне найменування цієї частини стандарту ISO/IEC 14496-5. Якщо ви зацікавлені, ви можете завантажити цю частину стандарту безкоштовно з офіційного сайту. І якщо ви подивитеся на джерело, ви побачите, що є ще одне значення цієї константи, яка є 2,082,758,400. Це точно 86,400 секунд, тобто один день менше, ніж правильне значення.
Як творці MPEG-4 неоднозначають різницю між двома датами? Можливо, хтось вручну підрахував луп років і отримав його неправильно? Не знаю. Один спосіб або інший, неправильне значення через його присутність в стандарті отримав в багато бібліотек для читання та написання відео форматів. Поступово в останні роки правильне значення починає змінюватися; якщо ви google обидва номери, ви побачите деякі точні описи проблеми в джерелах декількох проектів: «Стандарт пропонує використовувати 2,082,758,400, але правильне значення 2,082,844,800». В інших проектах правильне значення просто тому, що вони самі розраховані, на основі визначення епох, і не використовували джерело від стандарту.
Якщо бібліотека, яка створює файл MP4 для вас неправильне значення, що відбувається, коли він хоче писати зараз? Прийміть правильну кількість секунд на виворіт, додайте констанцію дня менше, ніж вона повинна, і таким чином отримайте кількість секунд, відповідно до епохи Макінош, що відповідає часу на день раніше. Я відправив опис проблеми і рішення розробникам YouTube, і я сподіваюся, що незабаром ця помилка зникне.
Все в цьому світі Вигнуті руки авторів MPEG-4 призводять до конфіскації теорій в українському конфлікті. Ми.
Джерело: habrahabr.ru/post/230571/
У форматі MP4 відео (MPEG-4), можна записувати «час створення» будь-якого потоку даних за допомогою спеціальної етикетки. Значення даної етикетки в стандарті: кількість секунд, які клаплися з 1 січня 1904 р. або так званого «Максинтошого часу», тому що маки вперше використовували такий відлік. Тим не менш, в сучасних серверах набагато простіше боротися з «розумом», а саме кількість секунд, які лягли з 1 січня 1970 року. У результаті багато програм, які працюють на Linux або інших операційних системах Unix, мають шматок коду, який виглядає щось схоже на це:
- Отримай "час зараз Unix";
- додаємо різницю між часом і часом макінтош - це постійне;
- Напишіть отриманий файл MP4, який ми створюємо.
Але є крихітна, тонка проблема. Частина стандарта MPEG-4 є вихідними бібліотеками, які можуть читати і писати mp4 файли, так посилання на програмне забезпечення в C++, які кожен може використовувати для запозичення або порівняти з їх кодом. Повне найменування цієї частини стандарту ISO/IEC 14496-5. Якщо ви зацікавлені, ви можете завантажити цю частину стандарту безкоштовно з офіційного сайту. І якщо ви подивитеся на джерело, ви побачите, що є ще одне значення цієї константи, яка є 2,082,758,400. Це точно 86,400 секунд, тобто один день менше, ніж правильне значення.
Як творці MPEG-4 неоднозначають різницю між двома датами? Можливо, хтось вручну підрахував луп років і отримав його неправильно? Не знаю. Один спосіб або інший, неправильне значення через його присутність в стандарті отримав в багато бібліотек для читання та написання відео форматів. Поступово в останні роки правильне значення починає змінюватися; якщо ви google обидва номери, ви побачите деякі точні описи проблеми в джерелах декількох проектів: «Стандарт пропонує використовувати 2,082,758,400, але правильне значення 2,082,844,800». В інших проектах правильне значення просто тому, що вони самі розраховані, на основі визначення епох, і не використовували джерело від стандарту.
Якщо бібліотека, яка створює файл MP4 для вас неправильне значення, що відбувається, коли він хоче писати зараз? Прийміть правильну кількість секунд на виворіт, додайте констанцію дня менше, ніж вона повинна, і таким чином отримайте кількість секунд, відповідно до епохи Макінош, що відповідає часу на день раніше. Я відправив опис проблеми і рішення розробникам YouTube, і я сподіваюся, що незабаром ця помилка зникне.
Все в цьому світі Вигнуті руки авторів MPEG-4 призводять до конфіскації теорій в українському конфлікті. Ми.
Джерело: habrahabr.ru/post/230571/