1904年1月1日、1970年、Youtube、国際紛争と曲がった手

残念ながら、トピックリンクは長い間姿を消してきましたが、時には非常に興味深い直接的なものがあります。 Anatoly Vorobeyの投稿をお勧めします(Googleで開発者として働いています)。



MP4ビデオ形式(MPEG-4標準)では、特別なラベルを使用して、データストリームの「作成時間」を記録できます。 標準でのこのラベルの意味は、1904年1月1日から経過した秒数、またはいわゆる「macの年齢による時間」です。これは、ポピーがこの時間カウントを最初に使用したためです。 一方、最新のサーバーでは、「Unix時代に応じた時間」、つまり1970年1月1日から経過した秒数を処理するのがはるかに簡単です。 この結果、Linuxまたは他のUnixオペレーティングシステムで実行される多くのプログラムには、次のようなコードがあります。



一定の「Unix時間とMac時間の違い」とは何ですか? これは、1904年1月1日から1970年1月1日までに経過した秒数です。これらは66年で、そのうち17年はle年でした(あなたが私を信用していないか確認してください)。 判明した合計日数:66 * 365 + 17 = 24 107、および秒、1日あたり86 400秒の場合:24 107 * 86 400 = 2 082 844800。これは正しい定数値です。



しかし、小さな小さな目に見えない問題があります。 MPEG-4標準の一部は、誰もがコードを借用または比較するために使用できるC ++リファレンスソフトウェアなど、mp4ファイルを読み書きできるライブラリのソースコードです。 標準のこの部分の完全な名前はISO / IEC 14496-5です。 興味がある場合は、公式Webサイトから標準のこの部分を無料ダウンロードできます。 ソースを見ると、この定数の異なる値、つまり2,082,758,400が使用されていることがわかります。これは正確に86,400秒、つまり正しい値より1日少ないです。



MPEG-4の作成者が2つの日付の差を誤って計算したのはどうしてですか? たぶん誰かがうるう年を手動で数え、間違いを犯したのでしょうか? 知りません 何らかの方法で、標準に存在するために誤った値が、ビデオ形式の読み取りおよび書き込み用の多くのライブラリに落ちました。 徐々に近年、正しい意味がそれに取って代わり始めています。 Googleで両方の数値を調べると、いくつかのプロジェクトのソースに問題の正確な説明がいくつか表示されます。「標準では2,082,758,400を使用することを推奨していますが、正しい値は2,082,844,800です。」 他のプロジェクトでは、正しい値は単にそれらが時代の定義に基づいて計算され、標準のソースを使用しなかったためです。



MP4ファイルを作成するライブラリに間違った値が書き込まれている場合、「今」の時間を記録しようとするとどうなりますか? 彼女は、Unixで正しい秒数を取り、必要な日数よりも1日少ない定数を追加し、それによってMac時代によると、1日前の時間に対応する秒数を取得します。 YouTubeの開発者に問題と解決策の説明を送信しましたが、このバグがすぐになくなることを願っています。



この世界のすべては相互接続されています。 MPEG-4標準の作者の曲がった手は、ウクライナ紛争における陰謀理論につながります。 だから私たちは生きています。



All Articles