プレイリストの合計時間と平均トラック時間を計算
この計算ツールは、プレイリストに含まれる各トラックの長さを合計し、全体の再生時間と平均トラック時間を返します。精密な時間が必要な場合は、小数を含む秒数で入力してください。計算に使用したトラック数も結果に含まれるため、項目の漏れを確認できます。動画プレイリスト、音楽キュー、講座モジュール、上映プログラム、ポッドキャスト集など、時間を持つ順序付きコンテンツの管理に適しています。
無料で実行
すべての長さを秒単位で準備してください
プレイリストに含める各トラックの長さを集め、送信前にすべて秒へ換算してください。単位を統一すると曖昧さがなくなり、小数も簡単に扱えます。たとえば3分5秒半は185.5秒です。編集ソフトやコンテンツ管理システムと照合しやすい場合は順序を保ってください。ただし、順序は計算結果に影響しません。長さが未確定の項目、プレースホルダー、タイトルカードなどには0を使用できますが、負の値は使用できません。各項目には有限の実数を指定し、03:05のような書式付き時刻、数字の文字列、無限大、欠損値は入力しないでください。予定しているトラックをそれぞれ1回だけ含めます。空のプレイリストには意味のある平均時間が存在しないため、空配列は明示的にエラーになります。0を返して入力ミスを隠すのではなく、修正できるようにするための仕様です。
合計値と平均値の意味をご確認ください
合計時間は、受け付けた全トラックの長さを足した値です。平均トラック時間はその合計をトラック数で割った値で、track_countには除数となる件数が表示されます。そのため、入力を数え直さずに結果を監査できます。どちらの時間も入力と同じ秒単位なので、別のタイムライン計算へ直接渡せます。表示用には後から時・分・秒へ変換できますが、自動処理では書式付き文字列の解析を避けられる秒数のままが安全です。小数にも対応し、丸めはコンピューター計算で生じるごく小さな誤差だけを除きます。入力に含まれていない間隔、切り替え、広告、導入部、再生速度の変更、クロスフェードは自動的に加算されません。完成時の長さに影響する要素は、追加の時間として含めるか、該当トラックの秒数を事前に調整してください。
計画と品質確認に結果をご活用ください
公開前に、放送枠、授業時間、イベント枠、保存容量の見積もり、視聴者の時間予算に収まるかを合計時間で確認できます。平均値はコレクションの概要を示し、不自然な入力の発見にも役立ちます。平均が極端に短ければミリ秒を秒として入力した可能性があり、長すぎればトラックの重複や単位変換の誤りが考えられます。自動処理ではtrack_countとカタログの項目数を比較し、使用したプレイリスト版と結果を一緒に記録してください。この機能はメディアを取得せず決定的な算術のみを行うため高速で、動画、URL、非公開ライブラリ、メタデータサービスへのアクセスも不要です。一方、提供された秒数を信頼するため、古いメタデータは検出できません。追加、削除、編集、差し替え、速度変更のたびに再計算し、契約上正確な尺が必要な場合は完成ファイルも別途検証してください。
活用例
上映スケジュールを調整
選択した全動画の長さを加算し、会場の時間枠を確保する前にプログラム全体の尺をご確認いただけます。
講座プレイリストを監査
書き出したデータから、レッスン数、総視聴時間、標準的なモジュール時間をご確認いただけます。
公開ワークフローを検証
プレイリストの公開前に、計算した件数と時間をカタログのメタデータと比較できます。
よくある質問
APIでの計算料金はいくらですか?
各APIリクエストには現在の基本料金$0.002が適用されます。ブラウザーでも計算をご利用いただけます。
どの単位を使えばよいですか?
すべての長さを秒で入力してください。1秒未満の精度が必要な場合は小数も使用できます。
平均トラック時間はどのように計算されますか?
全トラックの長さの合計を、durationsリストに含まれる項目数で割って算出します。
リストが空の場合はどうなりますか?
空のプレイリストには意味のある平均時間がないため、無効な入力としてエラーを返します。
合計に間隔や切り替え時間は含まれますか?
指定された長さだけを合計します。間隔を追加し、重なりや速度変更は送信前に調整してください。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/video/playlist-total-duration \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"durations":[185.5,242,198.25]}'const res = await fetch("https://api.kit.forhosting.com/video/playlist-total-duration", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"durations": [
185.5,
242,
198.25
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/playlist-total-duration",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"durations": [
185.5,
242,
198.25
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/playlist-total-duration", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"durations":[185.5,242,198.25]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"durations":[185.5,242,198.25]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/playlist-total-duration", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"durations": [
185.5,
242,
198.25
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.playlist_total_duration",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |