1092
1904年1月1日,1970年的Youtube,国际冲突和曲线的手
不幸的是,长了主题链接,但有时非常有趣的事情的第一手资料。推荐帖子阿纳托利Vorobeya(开发工作在“谷歌”)。
在视频格式的MP4(MPEG-4标准),它可以通过使用一个特殊的标记,以记录任何数据流的“创建时间”。在标准中该变量的值:秒自1904年1月1日的数量,或所谓的<一个href="http://en.wikipedia.org/wiki/Epoch_(reference_date)#Notable_epoch_dates_in_computing">«время按年龄MAC»,因为罂粟是第一次使用这样的时机。同时,在今天的服务器更容易对付“时间在Unix时代”,几秒钟即数量自1970年1月1日。其结果是,在各种在Linux或其他Unix的操作系统上运行的程序,有一个代码段,看起来像这样方法:
在视频格式的MP4(MPEG-4标准),它可以通过使用一个特殊的标记,以记录任何数据流的“创建时间”。在标准中该变量的值:秒自1904年1月1日的数量,或所谓的<一个href="http://en.wikipedia.org/wiki/Epoch_(reference_date)#Notable_epoch_dates_in_computing">«время按年龄MAC»,因为罂粟是第一次使用这样的时机。同时,在今天的服务器更容易对付“时间在Unix时代”,几秒钟即数量自1970年1月1日。其结果是,在各种在Linux或其他Unix的操作系统上运行的程序,有一个代码段,看起来像这样方法:
- 在得到“现在时间为Unix系统»;
- 添加Unix系统和时间之间的时差在Macintosh上 - 这是一种恒定的;
- 出现的”为Mac现在的时间“写入文件的MP4,我们创造。 LI> UL>什么是常量“Unix系统和时间对Mac之间的区别?”这也正是1904年1月1日和1月1日,1970年这之间经过的秒数为66岁,其中17个是闰年(检查,如果你不相信我)。总天数有:66 * 365 + 17 = 24 107,和第二,在一天内给定的86400秒:24 107 * 86 400 = 2 082 844 800,这是不变的正确值
但有一点不易察觉的微小拗造型。部分的MPEG-4标准 - 可以读取和写入文件到MP4,所以参考软件在C ++中,其中每个人都可以用它来借入或与您的代码比较源库。 ISO / IEC 14496-5:这部分标准的全称。如果你有兴趣,你可以下载这个<一href="http://standards.iso.org/ittf/PubliclyAvailableStandards/c040361_ISO_IEC%2014496-5_2001_Amd%207_2005_Reference_Software.zip">часть标准摆脱了官方网站。如果你看一下源代码,你会看到它使用此常数的不同的值,即2082758 400。这正是86400秒,即在晚上,低于正确值。
怎么了MPEG-4的创作者认为不当的两个日期之间的区别?也许有人认为手动闰年和犯了一个错误?我不知道。无论哪种方式,因为它在标准可怕存在于许多库用于读取和写入格式错误的值。渐渐地,在最近几年的正确的值开始变化;如果你在谷歌两个号码进行搜索,你会看到几个项目的源代码问题的若干具体描述:“该标准建议使用2082758400,但正确的值是2082844800。”在其他项目中,正确的价值是值得只是因为他们以某种时代的基础上,并没有采用标准的源代码。
如果为您创建的MP4档案库中记录了错误的值,那么当她想要记录的“现在”时会发生什么?将采取的正确的秒数上Unix系统中,添加一个恒定的一天小于必要,由此得到的秒数,按照为mac这之前对应的时间晚上时代。我送的问题和解决方案的开发YouTube的描述,我希望这个错误很快就会消失。
在这个世界上一切都是相互联系。曲线手中的MPEG-4引线作者以阴谋论在乌克兰冲突。和我们住。
资料来源: habrahabr.ru/post/230571/