動画解像度のスケール計算
配信用の解像度を選ぶと正確な画面サイズが分かります。1920×1080を720pにすると1280×720、倍率は0.666667です。元より拡大になる場合ははっきり知らせます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 元の幅
- 1,920
- 元の高さ
- 1,080
- 目標のラベル
- 720p
- 変更後の高さ
- 720
- スケール因子
- 0.666667
- 拡縮後の幅
- 1,280
- 拡縮後の高さ
- 720
この計算ツールは、元動画の幅と高さ、および一般的な出力解像度ラベルから、正確で再利用可能なサイズ変更プランを作成します。480p、720p、1080p、4Kのいずれかを選ぶと、目標の高さ、均一なスケール係数、比例する幅、拡大処理かどうかが返されます。計算のみを行うため、動画のアップロード、デコード、変更、保存はありません。エンコード設定の準備、書き出しプリセットの検証、変換前のメディア処理統一にご利用いただけます。
解像度ラベルからスケール係数を求める方法
解像度ラベルは、配信用プログレッシブ映像のフレーム高を表します。本ツールでは480pを480ピクセル、720pを720ピクセル、1080pを1080ピクセル、4Kを2160ピクセルに対応させます。その目標高を元動画の高さで割ることで係数を算出します。
高さ1080ピクセルの素材を720pにする場合は0.666667、高さ720ピクセルの素材を1080pにする場合は1.5です。1未満なら縮小、1なら同じ大きさ、1を超える場合は拡大です。ただし比例幅は丸め前の比率から計算し、最後に最も近い整数ピクセルへ丸めます。
表示用係数による不要な寸法誤差を防げます。入力値と固定表だけを使うため、同じ入力には常に同じ結果が返ります。
元動画の縦横比を維持する仕組み
選択したラベルが定めるのは出力の高さであり、特定の長方形キャンバスではありません。元の幅にも同じ係数を適用するため、映像の形は維持されます。標準的な1920×1080のフレームで720pを選ぶと1280×720になります。
一方、640×480の古い映像では960×720となり、1280×720へ無理に引き伸ばされません。この違いは重要です。 解像度ラベルは垂直方向の細かさを示し、元の寸法はフレーム形状を決めるからです。エンコーダーによっては偶数寸法や、コーデック固有のブロックサイズで割り切れる値が必要です。
本ツールは数学的な倍率を変えないよう、その調整を自動では行いません。結果を比例サイズの計画として使い、必要な余白追加や切り抜きはエンコーダー側で明示的に適用してください。
活用例
エンコード段階の設計
トランスコーダーを設定する前に、複数の配信段階について一貫した比例寸法を算出できます。
非ワイド映像の形状維持
アーカイブ、縦長、特殊比率の映像を、元の形を変えずに目標の高さへ合わせられます。
よくある質問
対応する目標ラベルは何ですか?
使用できる表記は480p、720p、1080p、4Kの4種類だけです。
動画は16:9に引き伸ばされますか?
いいえ。 同じ係数を幅と高さの両方に適用し、元の縦横比を維持します。
動画ファイル自体をサイズ変更しますか?
いいえ。 決定的な計算結果だけを返し、動画の転送、デコード、エンコード、保存は行いません。
1920×1080の動画を720pにするとどうなりますか?
720pを選んで1920×1080を入れると、結果は1280×720、倍率は0.666667です。目標の高さを元の高さで割り、同じ倍率を幅にも掛けます。
640×480の映像を720pにすると960×720になるのはなぜですか?
選んだ解像度が決めるのは高さだけです。幅は同じ倍率で変わるため、元の4:3の形が保たれ、1280×720に引き伸ばされることはありません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/video/resolution-convert \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"source_width":1920,"source_height":1080,"target_label":"720p"}'const res = await fetch("https://api.kit.forhosting.com/video/resolution-convert", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"source_width": 1920,
"source_height": 1080,
"target_label": "720p"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/resolution-convert",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"source_width": 1920,
"source_height": 1080,
"target_label": "720p"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/resolution-convert", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"source_width":1920,"source_height":1080,"target_label":"720p"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"source_width":1920,"source_height":1080,"target_label":"720p"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/resolution-convert", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"source_width": 1920,
"source_height": 1080,
"target_label": "720p"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.resolution_convert",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
解像度ラベルからスケール係数を求める方法
is_upscaleは拡大を明示するため、呼び出し側ごとに判定を実装する必要がありません。返却する係数は、簡潔で安定したJSONにするため小数第6位までに丸めます。
元動画の縦横比を維持する仕組み
動画寸法は整数ピクセルである必要があるため、scaled_widthは最も近い整数に丸めます。
有効な入力と結果の実務的な読み方
高さが同じ場合は、比例幅の丸めで1ピクセル変わってもfalseです。目標の垂直ピクセル数が多い場合だけtrueになります。拡大はフレーム寸法を増やしますが、元にない細部を復元するものではありません。そのため品質保証ではなく、素材の変更、編集担当者への警告、高画質化処理の選択、方針に反する自動拡大の停止に使う判断材料です。source_widthとsource_heightには、1以上1,000,000以下の整数ピクセル値を指定してください。target_labelには認識される4種類の表記のいずれかを指定します。表記は大文字と小文字を区別し、4Kは有効ですが、4k、UHD、2160p、独自の段階名はinvalid_inputになります。この厳密さにより連携処理が予測可能になり、入力ミスによる誤解を招く変換を防げます。is_upscaleは目標高と元の高さを比較します。成功したAPIリクエスト1件の料金は$0.002です。
連携の活用例
意図しない拡大の検出
処理の送信前にis_upscaleを確認し、明確な判断なしに低解像度素材を拡大する事態を防げます。
技術的な質問
スケール係数はどのように計算されますか?
選択したラベルの高さをsource_heightで割り、表示する係数を小数第6位までに丸めます。
is_upscaleがtrueになる条件は何ですか?
選択した目標高が元の高さより大きい場合です。同じか小さい場合はfalseになります。