目標ファイルサイズから動画ビットレートを計算
この計算ツールは、動画の再生時間と納品可能な最大ファイルサイズという2つの実用的な条件から、エンコード時に使える動画・音声合計のビットレート予算を求めます。結果を示す前に安全余裕を確保するため、コンテナのメタデータ、可変ビットレート、マルチプレクス処理のオーバーヘッド、エンコーダーの指定値と実際の出力との差にも対応できます。算出値を動画と音声の合計上限として扱い、エンコーダー設定で各ストリームへ配分してください。
無料で実行
再生時間と実際の納品上限を入力します
完成した番組全体の再生時間を秒で、希望する最終サイズを10進表記のメガバイトで入力してください。このツールでは、アップロードサービスやストレージ事業者で一般的な表示に合わせ、1メガバイトを1,000,000バイトとして扱います。再生時間には、タイトル画面、クレジット、追加した区間など、完成ファイルに多重化されるすべての内容を含める必要があります。目標値には、おおよその希望ではなく実際の納品上限を指定してください。たとえば上限が100 MBのサービスでは、100 MBを目標にして既定の安全余裕を残す方が、理論上の全ビットを使い切るより現実的です。余裕を引く前の最大値は、メガバイトをビットへ換算し、秒数で割って求めます。この値は動画、音声、字幕、メタデータ、コンテナが共有する合計レートです。わずかな時間の誤差もエンコード全体に及ぶため、正確な再生時間が重要です。長さが変動する素材では、編集を確定してから最終タイムラインで計算してください。
安全余裕による違いを確認します
理論上のビットレートは、完成ファイルのすべてのビットを完全に予測できるメディアストリームへ割り当てられると仮定しています。しかし実際のエンコードでは、コンテナのヘッダーやインデックスが加わり、音声もレートの一部を使い、可変ビットレートのエンコーダーが指定平均値をわずかに超える場合があります。安全余裕は、結果を返す前に理論上の合計レートを減らし、目標サイズの一部を意図的に残します。既定の5パーセントでは、数学的な最大値の95パーセントを推奨します。アップロード拒否の影響が大きい場合、エンコーダーが超過しやすい場合、複数の音声・字幕トラックを含む場合は余裕を増やしてください。厳密に管理した2パス処理なら小さな余裕も選べますが、0では予備領域がなくなります。結果は合計値ですので、動画の設定値を求めるには音声などの予定レートを差し引きます。たとえば合計が1,267 kbps、音声が128 kbpsなら、動画は約1,139 kbpsです。返された予算に音声を上乗せしないでください。
エンコード工程で結果を活用します
必要な合計ビットレートを計画表やエンコードパイプラインへ転記し、内容に応じて動画と音声へ配分してください。会話の多い素材では小さくても安定した音声枠が必要ですが、無音の画面収録なら予算のほぼ全部を動画に使えます。最終サイズへ近づけるには、一定品質のみを基準とするモードより、平均ビットレートまたは2パス方式をご利用ください。一定品質方式ではファイルサイズが保証されません。エンコード後は、実際のサイズと各メディアのビットレートを確認してください。通常は安全余裕によって目標以下に収まりますが、エンコーダー、特殊なコンテナ、添付データ、追加トラックで結果が変わる可能性があります。安全調整後の合計レートが100 kbps未満になる目標は拒否されます。この基準により、極端に厳しい数値を一般用途の動画計画として提示することを防ぎます。100 kbps未満のエンコードが技術的に不可能という意味ではなく、この機能の実用的な計画範囲外であることを示します。再生時間を短くするか、目標サイズを増やすか、低帯域向けの専門的な工程をご利用ください。
活用例
アップロード上限に収める
完成したプレゼンテーションを厳しいファイルサイズ上限内に保つエンコード予算を算出します。
メールや学習サービスでの配信を計画する
長時間の2パス処理を始める前に、再生時間が決まった教材の合計ビットレートを選べます。
ストリーム間で予算を配分する
最初に合計上限を求め、予定する音声レートを差し引いて動画ビットレートを決定します。
よくある質問
API リクエストの料金はいくらですか?
API の各リクエスト料金は $0.002 です。ブラウザ版でも同じ決定的な計算を端末内で実行できます。
結果には音声ビットレートも含まれますか?
はい、動画と音声の合計予算です。動画を設定する前に、音声やその他のストリーム分を差し引いてください。
安全余裕はなぜ必要ですか?
コンテナ、メタデータ、追加ストリーム、通常のエンコーダー変動に使える領域を残すためです。
MBは1,000,000バイトと1,048,576バイトのどちらですか?
この計算ツールは10進メガバイトを使い、1 MBを1,000,000バイトとして扱います。
目標が小さすぎるとして拒否されたのはなぜですか?
安全余裕の適用後に、利用可能な最低値100 kbpsを下回ったためです。目標サイズを増やすか再生時間を短くしてください。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/video/compress-target-size \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"duration_seconds":600,"target_size_mb":100}'const res = await fetch("https://api.kit.forhosting.com/video/compress-target-size", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"duration_seconds": 600,
"target_size_mb": 100
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/compress-target-size",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"duration_seconds": 600,
"target_size_mb": 100
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/compress-target-size", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"duration_seconds":600,"target_size_mb":100}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"duration_seconds":600,"target_size_mb":100}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/compress-target-size", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"duration_seconds": 600,
"target_size_mb": 100
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.compress_target_size",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |