最近は YouTube 動画をたくさん作っています。

しかしこの動画作成が大変です。こんな感じの元動画ファイルを動画編集ソフトで編集しています。

GUI で操作しなければならず、マウスクリックや繊細なドラッグ、癖がありマウスクリックを何度もしたうえでの数値入力など、編集が効率的とは言えません。

そこで、動画プロジェクトの編集データを直接編集しなければやってられない。そういう結論に至ることありますよね? そう。いまがどのときです。
■ とりあえず元動画の編集後動画上での開始時刻と時間
試行錯誤して、どうもここの部分のようだとわかりました。ちなみに多数のフレームのそれぞれにこのようなデータの組があり、どこがどのフレームかの属性が見当たりませんでした。もしかして、並び順がフレームの順になっている......? いやそんな馬鹿な......。
START="10010010" STOP="140140140" SCENESTART="0" SCENESTOP="130130130" MEDIASTART="0" MEDIASTOP="130130130" STRETCHMODE="STRETCH" ASPECTRATIO_X="0"
動画開始後 1 秒後に元動画を差し込み、13 秒分の長さを切り出した設定です。
1 秒が 10010010 になったり 14 秒が 140140140 になったり、よくわからないデータが格納されています。
動画編集界隈では秒に 10010010 という係数をかけた値を編集データとして格納するのはよくあることなのでしょうか? またこの係数の意味は何なのでしょうか?
動画とはいえ XML データですし、もしかしたら GitHub Copilot 知っているかもしれません。というわけで聞いてみました。
■ 問い
13秒間が130130130 7秒間が70070070 12.5秒間が129796463 と格納されているようです。この時間の格納フォーマットは何ですか? 秒、ミリ秒からの計算式は何ですか?
■ 回答
ご提示いただいた例:
- 13秒間 → 130130130
- 7秒間 → 70070070
- 12.5秒間 → 129796463
この数値の格納フォーマットについて解析します。
1. 規則性の確認
まず、秒数と格納値の関係を見てみます。
13秒 → 130130130
7秒 → 70070070
どちらも「秒数 × 10010010」という形になっています。
- 13 × 10010010 = 130130130
- 7 × 10010010 = 70070070
つまり、格納値 = 秒数 × 10010010
2. 12.5秒の場合
- 12.5 × 10010010 = 125125125
しかし、実際の格納値は 129796463 です。
この値は少し異なります。
3. 12.5秒の値の検証
129796463 ÷ 12.5 = 10383717.04
この値は10010010より少し大きいです。
4. 仮説
- 基本は「秒数 × 10010010」
- ただし、小数点秒の場合は別の計算式か、補正が入っている可能性
5. ミリ秒からの計算式
もし「秒」や「ミリ秒」からこの値を計算したい場合、
整数秒の場合は:
格納値 = 秒数 × 10010010
ミリ秒の場合は:
格納値 = (秒数 + ミリ秒 / 1000) × 10010010
ただし、12.5秒の例ではこの式が完全には一致しません。
もしかすると、12.5秒の場合は内部的に「フレーム数」や「サンプル数」など、
別の単位で計算されている可能性があります。
6. まとめ
- 格納フォーマットは「秒数 × 10010010」と推測されます。
- 秒・ミリ秒からの計算式は「(秒数 + ミリ秒 / 1000) × 10010010」
- ただし、小数点秒の場合は補正や別の計算が入る場合があるので、
実際の値と完全に一致しないこともあります。
もし、より詳細な仕様や他の例があれば、さらに正確な計算式を導き出せます。
ファイルの仕様書や他のサンプル値があれば、ぜひご提供ください。
■■■■ GitHub Copilot も知らない ■■■■
GitHub Copilot もわからないようです。
Microsoft Copilot でも聞いてみる
13秒間が130130130 7秒間が70070070 12.5秒間が129796463 と格納されているようです。この時間の格納フォーマットは何ですか? 秒、ミリ秒からの計算式は何ですか?
回答
この数値は、時間を整数で表現した独自のフォーマットのようです。調査の結果、以下のような計算式が考えられます:
🧮 格納フォーマットの推測
与えられた例:
- 13秒 → 130130130
- 7秒 → 70070070
- 12.5秒 → 129796463
これらの数値は、秒数 × 秒数 × 1001 に近い値になっています。
🔍 計算式の推定
仮説として、以下のような式が使われている可能性があります:
格納値 = 秒数 × 秒数 × 1001
検証:
- 13秒 → 13 × 13 × 1001 = 169 × 1001 = 169169(実際は 130130130 → 異なる)
- 7秒 → 7 × 7 × 1001 = 49 × 1001 = 49049(実際は 70070070 → 異なる)
この仮説では一致しないため、別の可能性として:
格納値 = 秒数 × 10010010
検証:
- 13秒 × 10010010 = 130130130
- 7秒 × 10010010 = 70070070
- 12.5秒 × 10010010 = 125125125(実際は 129796463 → ズレあり)
つまり、おそらく「秒数 × 10010010」形式で格納されているが、12.5秒のような小数秒では補正が入っている可能性があります。
🧠 結論
- このフォーマットは「秒数 × 固定係数(例:10010010)」のような独自の整数変換方式である可能性が高いです。
- 小数秒の場合は、補正や丸め処理が加わっている可能性があります。
- 正確な仕様は、格納元のシステムやライブラリの定義を確認する必要があります。
もしこのフォーマットが使われているプログラムやライブラリが分かれば、より正確な計算式を導き出せます。どこで使われているか、心当たりはありますか?
動画編集ソフトの編集データファイル内の値です
ありがとうございます、それで状況がよく分かりました!
🎬 動画編集ソフトの編集データファイルに格納されている 130130130 や 70070070 のような値は、タイムコード(時間位置)を内部的に整数で表現したものである可能性が高いです。これは、ソフトウェアがフレーム単位や特定のスケールで時間を扱うために、秒数を特定の係数で変換して格納している形式です。
🧩 よくあるタイムコードの格納方式
動画編集ソフトでは、以下のような方式が使われることがあります:
| | |
| | |
| | |
| | |
| | |
🔍 あなたの例に近い形式
以下のような計算式が近いです:
格納値 ≒ 秒数 × 10010010
検証:
- 13秒 × 10010010 = 130130130
- 7秒 × 10010010 = 70070070
- 12.5秒 × 10010010 = 125125125(実際は 129796463 → わずかにズレ)
このズレは、小数点以下の補正や丸め処理、または内部的なフレーム補正が入っている可能性があります。
🧠 推定される計算式
格納値 = 秒数 × 10010010
または
格納値 = 秒数 × (編集ソフト固有のスケール係数)
この係数は、ソフトによって異なる可能性があります。たとえば:
- Adobe Premiere Pro や After Effects では、タイムコードをフレーム数で管理
- AviUtl や DaVinci Resolve では、独自のスケールやミリ秒単位で管理
🛠 次のステップ
もし編集ソフト名やファイル形式(例:.prproj, .aup, .drp など)が分かれば、より正確なフォーマットや計算式を特定できます。
よければ、どのソフトの編集データか教えていただけますか?
■■■■ Microsoft Copilot も知らない ■■■■
■ 結論
10010010 というマジックナンバーを係数に秒数で編集する方針でいくしかないようです。