動画コンテナとコーデックの互換性チェック
動画再生は、メディアをまとめるコンテナと、映像を圧縮するコーデックという別々の選択に左右されます。よく知られた拡張子でも、中の映像ストリームがあらゆる環境で再生できるとは限りません。この確認ツールでは、MP4、MOV、MKV、WebM、AVIと、H.264、H.265、VP9、AV1の組み合わせを評価します。対応状況を慎重に判定し、相互運用上の主な注意点と、広く再生可能な代替版を用意すべき場合をご案内します。
無料で実行
互換性の判定結果を正しくお読みください
再生可否を技術的な「はい」か「いいえ」だけで示さず、3段階で対応状況を表します。広範は、現在の主要ブラウザーと新しいiOSおよびAndroid環境で、信頼できる配信方法であることを示します。限定的は実際に対応する環境がある一方、ブラウザーの種類、OSの版、端末のハードウェア、または一般的な格納方法によって重要な抜けがある状態です。不十分は、Web配信では一般的でないか、モバイルOSの標準プレーヤーで安定して利用できない組み合わせです。広範対応を示す真偽値は自動処理に使いやすく、説明文から判定理由も確認できます。ただし、これは形式レベルの評価であり、すべてのファイルの再生を保証するものではありません。プロファイル、レベル、解像度、ビット深度、フレームレート、音声コーデック、暗号化、破損したメタデータも再生に影響します。エンコードや実機試験の前段階で構成を確認する用途に使い、対象利用者の実際の環境で代表的なファイルを必ずお試しください。
コンテナとコーデックを一体でお選びください
コーデックは映像フレームの圧縮方法を表し、コンテナは映像、音声、時刻情報、字幕、メタデータのまとめ方を定めます。両者には関係がありますが、同じものではありません。MP4内のH.264は、圧縮方式と格納方式の双方がブラウザーやモバイル端末で成熟しているため、高い可搬性があります。同じH.264ストリームでも、AVIやMKVに入れるとデスクトップ用アプリでは動作しても、埋め込みWeb動画やモバイルOSの標準プレーヤーでは失敗する場合があります。同様に、ブラウザー配信のVP9にはWebMが自然ですが、MOV内のVP9は珍しく、安定した相互運用性を期待できません。新しいコーデックは通信量を減らせますが、効率の高さだけで形式が万能になるわけではありません。H.265はApple環境で特に強く、その他ではブラウザー、OS、ライセンス、ハードウェアへの依存が大きくなります。AV1の普及は進んでいますが、古いスマートフォンや適切なデコーダーを持たない端末も、利用者層によっては無視できません。
代替形式と本番試験をご計画ください
実用上もっとも広い範囲に届けるには、MP4とH.264を基準ファイルとしてご用意ください。画質や通信量の要件からVP9、AV1、H.265を採用する場合は、高度なファイル1本ですべてを賄うのではなく、新しいエンコードを追加の配信元として提供します。Webプレーヤーは複数の配信元を列挙し、ブラウザーに理解できる形式を選ばせられます。アプリも、プラットフォームと利用可能なデコーダーに応じて同様に選択できます。代替版は別にエンコードし、サーバーが正しいメディアタイプを返すこと、バイト範囲要求に対応すること、必要なオリジン間アクセスを許可することをご確認ください。マトリクスではプロファイル、レベル、ピクセル形式、色情報、音声コーデック、不正なメタデータを検出できないため、実ファイルでの試験が必要です。新旧のiPhoneとAndroid端末、アクセス解析で重要なブラウザーを含め、再生開始とシークの両方をご確認ください。エンコード構成や最低対応OSを変更した場合も、改めて試験してください。
活用例
Web配信形式を選定する
エンコード処理やHTML動画ソースを設定する前に、候補のコンテナとコーデックを比較できます。
アップロード動画を検査する
ブラウザーやモバイル標準プレーヤーで安定しない組み合わせを、公開担当者へ通知できます。
代替版の規則を適用する
CIで広範対応の真偽値を使い、新しい高効率形式とともにMP4/H.264を必須にできます。
よくある質問
広範という結果なら必ず再生できますか?
いいえ。形式としての対応範囲は広いものの、プロファイル、レベル、ビット深度、音声、暗号化、メタデータ、ブラウザーの版も影響します。
コンテナとコーデックを別々に確認するのはなぜですか?
コーデックは映像を圧縮し、コンテナはそのストリームを時刻情報、音声、メタデータとともに格納します。同じコーデックでもコンテナによって対応が異なります。
最も安全な代替形式は何ですか?
選択肢の中では、MP4とH.264がブラウザー、iOS、Android向けの最も信頼性の高い一般的な代替形式です。
動画ファイル自体を検査しますか?
いいえ。入力されたコンテナ名とコーデック名を評価します。既存ファイルのストリーム確認にはメタデータ解析ツールをご利用ください。
限定的な組み合わせが自分の端末で動くのはなぜですか?
実際に対応する環境はありますが、ブラウザー、OSの版、端末をまたいで十分に一貫していないため、限定的と判定されます。
1回の料金はいくらですか?
APIの各リクエストは $0.002 です。ブラウザー版でも同じ決定論的な互換性ロジックを使用します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/video/container-compatibility \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"container":"mp4","codec":"h264"}'const res = await fetch("https://api.kit.forhosting.com/video/container-compatibility", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"container": "mp4",
"codec": "h264"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/container-compatibility",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"container": "mp4",
"codec": "h264"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/container-compatibility", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"container":"mp4","codec":"h264"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"container":"mp4","codec":"h264"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/container-compatibility", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"container": "mp4",
"codec": "h264"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.container_compatibility",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |