最終更新日:2025-05-26 18:21:23
ビデオトランスコーディング機能は、オブジェクトストレージに保存されたビデオファイルを元のフォーマットから様々なターゲットフォーマットへ変換します。このサービスにより、ビデオのビットレート、解像度、エンコード方式を柔軟に調整できます。これにより、多様なデバイスでビデオコンテンツの互換性が確保され、すべてのユーザーに最適な視聴体験を提供します。
CDNetworksの映像トランスコーディングサービスは、以下のファイル形式とエンコーディング規格に対応しています:
| カテゴリー | サポート項目 |
|---|---|
| ビデオ形式 | MP4, FLV, HLS (m3u8), DASH (mpd), TS, MKV, MOV, WMV, AVI, VP8, VP9, RealVideo, Windows Media Video |
| オーディオ形式 | AAC, AC-3, MP1, MP2, MP3, PCM, RealAudio, Windows Media Audio (WMA), OGG |
| エンコーディング形式 | H.266 (VVC), H.265 (HEVC), H.264 (AVC), H.263, MPEG |
以下のシナリオで動画トランスコーディングをご利用いただけます:
ビデオトランスコーディングの操作は、リクエスト内のfops(ファイル操作)パラメーターを設定することで定義されます。fopsパラメーターは、一連のコマンドとサブパラメーターで構成され、スラッシュ(/)で連結・区切られます。
一般的な構造は以下の通りです:
<op>/<Format_value>[/param1/<value1>/param2/<value2>...]|saveas/<Urlsafe_Base64_Encoded_Save_Path>
たとえば、一般的なパラメーターを示す、より詳細な構造例は以下の通りです:
<op>/<Format>
/r/<value>
/ab/<value>
/vb/<value>
/vcodec/<value>
/acodec/<value>
/s/<value>
/autoscale/<value>
/autofill/<value>
/GOPInterval/<value>
/rotate/<value>
/an/<value>
/vn/<value>
/moovToFront/<value>
/sar/<value>
/preset/<value>
|saveas/<Urlsafe_Base64_Encode(bucket:savedfilename)>
重要ポイント:
op:オペレーションタイプ。live streaming transcodingの場合、avthumbで固定されています。Format:出力する動画のフォーマット(例:mp4、flv)。|saveas/...:この部分は必須です。エンコード後のファイルの保存場所(バケット)とファイル名をURLセーフBase64形式で指定します。下記の表は、live streaming transcodingでサポートされているパラメータおよびその説明を示しています。
| パラメーター | 必須 | 説明 |
|---|---|---|
op |
必須 | 操作タイプを指定します。動画トランスコーディングの場合、この値を avthumb に設定してください。 |
format |
必須 | 出力のフォーマットを指定します。サポートしているフォーマットには mp4、flv、m3u8(HLS)、mpd(DASH)などがあります。 |
r |
必須ではありません | 動画のフレームレート(fps)を指定します。一般的な値は 24、25、30 などです。注記: 動的なフレームレートキャプチャには対応していません。 |
ab |
必須ではありません | オーディオのビットレート(bit/s)を指定します。一般的な値:64k、128k、192k、256k、320k。(例:128k は 128 kbps を示します。) |
vb |
必須ではありません | 動画のビットレート(bit/s)を指定します。動的ビットレートに対応しています。一般的な値:128k、1.25m、5m。(例:128k は128 kbps、1.25m は1.25 Mbps を示します。) |
vbRatio |
必須ではありません | 動画ビットレートを係数として指定します。出力動画のビットレートは、入力動画のビットレートにこの係数を掛けた値になります。値の範囲は (0, 15] で、小数もサポートしています。 注記: 値が0または15を超える場合はエラーとなります。 vbRatioにより計算された動画ビットレートが50Mbpsを超える場合、異常とみなされ、このパラメータは適用されません。vbRatioとvbの両方が設定されている場合は、vbRatioが優先されます。 |
vcodec |
必須ではありません | 動画エンコーディング方式を指定します。指定しない場合は、システムが元のエンコーディング方式を維持しようとします。 オプション例: • libx264 - H.264• libvpx - VP8およびVP9(Googleコーデック)• libxvid - MPEG-4• libws265 - H.265• vvc - H.266 |
acodec |
必須ではありません | オーディオエンコーディング方式を指定します。指定しない場合、システムが元のエンコーディング方式を維持しようとします。MP3、AAC、OGG などをサポートしています。 |
s |
いいえ | 出力動画の解像度を幅x高さ(例:1920x1080)またはプリセット値で指定します。幅×高さモード:幅と高さを明確に指定します。両方を指定した場合、トランスコーダはその値をそのまま使用します。注意:設定した解像度のアスペクト比が元の動画と異なる場合、( autoscaleやautofillを使わない限り)画像が引き伸ばされたり圧縮されることがあります。幅または高さモード:いずれか一方のみ指定した場合(例: 1280xまたはx720)、トランスコーダは元のアスペクト比を維持しながらもう一方の値を自動計算します。例えば1920x1080の動画に対して1280xを指定すると、出力解像度は1280x720になります。 |
autoscale |
いいえ | sパラメータと併用してアスペクト比の処理方法を制御します:• 0(デフォルト):sパラメータで指定した解像度に厳密に処理を行い、画像が引き伸ばされる場合もあります。• 1:元のアスペクト比を維持しながら、sで指定された範囲に収まるように映像をスケーリングします。出力映像の幅と高さはsで指定された値を超えません。 |
autofill |
いいえ | sパラメータと併用して出力映像のサイズと余白を制御します:• 1:目標アスペクト比が元の動画と異なる場合、元動画をsで指定した範囲にアスペクト比を維持したままスケーリングし、余白部分には黒帯(レターボックスまたはピラーボックス)が追加され、最終的に出力解像度がsで設定した値と一致します。 |
GOPInterval |
いいえ | キーフレーム(Iフレーム)間の時間間隔をミリ秒(ms)単位で設定します。 注意:このパラメータはキーフレーム間のフレーム数を定義する gパラメータと競合するため、同時に使用できません。 |
rotate |
いいえ | 時計回りの回転角度を指定します。90、180、270、またはauto(動画メタデータを元に自動的に回転と補正を行う)が選択可能です。デフォルトでは回転は適用されません。 |
an |
いいえ | 音声ストリームを無効化します: • 0(デフォルト):音声ストリームを保持します。• 1:音声ストリームを削除し、出力動画には音声が含まれません。 |
vn |
いいえ | 映像ストリームを無効化します: • 0(デフォルト):映像ストリームを保持します。• 1:映像ストリームを削除し、出力ファイルには(存在する場合)音声ストリームのみが含まれます。 |
moovToFront |
いいえ | MP4ファイルにおけるmoovアトム(メタデータ)の配置位置を制御します:• 0(デフォルト):メタデータをファイルの末尾に保持します。• 1:メタデータをファイルの先頭に移動します。これにより、プレイヤーが初期化情報へ迅速にアクセスできるため、動画の再生開始時間が短縮される場合があります。 |
sar |
いいえ | サンプルアスペクト比(Sample Aspect Ratio)。特定のピクセルアスペクト比(例:1:1や1:2)を設定します。このパラメータは最終表示アスペクト比に影響し、通常はs(解像度)で暗黙的に与えられるアスペクト比よりも優先されます。例として、解像度が720x720でSARが1:2なら、表示時にピクセルが縦方向に伸ばされ、実効的な表示解像度(見かけの解像度)は720x1440となります。 |
/crf/<value> |
いいえ | 固定レートファクター(CRF)。本モードでは、出力ビットレートがシーンの複雑さに応じて動的に変動し、一定の画質を維持します。シンプルなシーンでは低いビットレート、複雑なシーンでは高いビットレートとなります。値の範囲は通常0から51(H.264/H.265の場合)。値が小さいほど高画質でファイルサイズが大きくなり、値が大きいほど低画質でファイルサイズが小さくなります。推奨範囲は[18, 28]です。 |
level |
いいえ | H.264/H.265エンコーディングLevelを設定します。Levelはデコーダの制約条件(最大解像度、フレームレート、ビットレートなど)を定義します。例としては、10(Level 1.0)から51(Level 5.1)まで指定できます。このパラメータはビデオコーデックがlibx264の場合のみ有効です。 |
pix_fmt |
いいえ | ピクセルフォーマットを設定します。例:yuv420p、yuv422p、yuv444p。yuv420p(YUV 4:2:0)はウェブ向け動画配信で最も一般的なフォーマットであり、高い互換性と圧縮効率を提供します。 |
vprofile |
いいえ | エンコーディングプロファイルを設定します。例えば、baseline、main、high、high10、high422、high444(主にH.264/H.265に対応)。プロファイルは利用されるエンコーディングツールのセットを定義し、圧縮効率や互換性に影響します。 |
maxrate |
いいえ | 可変ビットレート最大値の上限を設定します。kbit/s(例:1000k)またはMbit/s(例:8M;'M’は大文字)で指定します。注意:このパラメータを利用する場合、 bufsizeパラメータも必ず指定してください。 |
bufsize |
いいえ | エンコーダバッファサイズを設定します。maxrateと組み合わせて使用し、kbit/s(例:1000k)またはMbit/s(例:8M;'M’は大文字)で指定します。デコーダがビデオストリームを検証するために必要なバッファサイズを定義します。 |
seiKeep |
いいえ | トランスコード時にSEI(補助強化情報)を保持するかどうかを決定します。 • 0(デフォルト):SEIは保持されません。• 1:SEIが保持されます。特に、リマックスのみ(すなわち再エンコードせずにコンテナフォーマットのみ変更)を行う場合、SEI情報はデフォルトで保持されます。 |
preset |
いいえ | (主にHLS用)プリセット名を指定します。プリセットとは、あらかじめ最適化されたトランスコードパラメータ群です。プリセット名を指定することで、そのパラメータ群が適用されます。リクエスト内で個別のパラメータを追加し、プリセット内の特定設定を上書きすることも可能です。詳細は「HLSプリセット」をご参照ください。 |
saveas |
はい | トランスコード後ファイルの保存先(バケット)およびファイル名を定義します。この値は、Urlsafe_Base64_Encode(bucket:savedfilename)の形式で、URLセーフなBase64エンコーディングを使用します。 |
注意事項:
HLS(m3u8)トランスコーディング構成の簡素化のために、一連のプリセットが用意されています。各プリセットは、最適化されたパラメータの組み合わせを表します。
| 種別 | プリセット名 | 説明 |
|---|---|---|
| Audio | audio_32k |
音声ビットレート: 32 kbps |
| オーディオ | audio_48k |
オーディオビットレート:48 kbps |
| オーディオ | audio_64k |
オーディオビットレート:64 kbps |
| ビデオ | video_16x9_150k |
ビットレート:150 kbps、アスペクト比:16:9、解像度:約400x224 |
| ビデオ | video_16x9_240k |
ビットレート:240 kbps、アスペクト比:16:9、解像度:約400x224 |
| ビデオ | video_16x9_440k |
ビットレート:440 kbps、アスペクト比:16:9、解像度:約400x224 |
| ビデオ | video_16x9_640k |
ビットレート:640 kbps、アスペクト比:16:9、解像度:約400x224 |
| ビデオ | video_4x3_150k |
ビットレート:150 kbps、アスペクト比:4:3、解像度:約400x300 |
| ビデオ | video_4x3_240k |
ビットレート:240 kbps、アスペクト比:4:3、解像度:約400x300 |
| ビデオ | video_4x3_440k |
ビットレート:440 kbps、アスペクト比:4:3、解像度:約400x300 |
| ビデオ | video_4x3_640k |
ビットレート:640 kbps、アスペクト比:4:3、解像度:約400x300 |
| ビデオ | video_150k |
ビットレート: 150 kbps、アスペクト比を維持、幅は400pxを基準とする場合があります |
| ビデオ | video_240k |
ビットレート: 240 kbps、アスペクト比を維持、幅は400pxを基準とする場合があります |
| ビデオ | video_440k |
ビットレート: 440 kbps、アスペクト比を維持、幅は400pxを基準とする場合があります |
| ビデオ | video_640k |
ビットレート: 640 kbps、アスペクト比を維持、幅は400pxを基準とする場合があります |
| ビデオ | video_1000k |
ビットレート: 1000 kbps、アスペクト比を維持 |
| ビデオ | video_1500k |
ビットレート: 1500 kbps、アスペクト比を維持 |
注意:プリセット内の解像度は、アスペクト比を維持するためにソースビデオの特性に基づき調整される場合があります。
この例では、オブジェクトストレージバケット「vod-wcs-test001」にある「test.mp4」という動画ファイルをFLVフォーマットにトランスコードします。ビデオビットレートは「128k」に設定されています。トランスコード後のファイル名は「test_file.flv」となり、同じバケット内に保存されます。
パラメータ組み合わせ(fops):
avthumb/flv/vb/128k|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test_file.flv)
擬似コードリクエスト(curl):
curl -v -X POST \
--data "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/flv/vb/128k|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test_file.flv))&force=1&separate=1" \
--header "Authorization: AccessKey:EncodeSign" \
--url "<http://mgrDomain/fops>"
実際のリクエスト(Base64エンコード済み):
curl -v -X POST \
-d "bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9mbHYvdmIvMTI4a3xzYXZlYXMvZG05a0xYZGpjeTEwWlhOME1EQXhPblJsYzNSZlptbHNaUzVtYkhZPQ==&force=1&separate=1" \
-H "Authorization: AccessKey:EncodeSign" \
--url "<http://mgrDomain/fops>"
この例では、オブジェクトストレージのバケット「vod-wcs-test001」にある「test.mp4」という名前の動画をHLS形式にトランスコードします。これにより、.m3u8マニフェストファイルと、それに対応する.tsセグメントが生成されます。本例では、「video_16x9_150k」プリセットを使用します。このプリセットには以下のようなパラメータが含まれるのが一般的です:
メイントランスコード済みの.m3u8ファイルはtest.m3u8という名前で同じバケット内に保存されます。
パラメータの組み合わせ(fops):
avthumb/m3u8/preset/video_16x9_150k|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test.m3u8)
疑似コードによるリクエスト(curl):
curl -v -X POST \
--data "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/m3u8/preset/video_16x9_150k|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test.m3u8))&force=1&separate=1" \
--header "Authorization: AccessKey:EncodeSign" \
--url "<http://mgrDomain/fops>"
実際のリクエスト(Base64エンコード済み):
curl -v -X POST \
-d "bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9tM3U4L3ByZXNldC92aWRlb18xNng5XzE1MGt8c2F2ZWFzL2RtOWtMWGRqY3kxMFpYTjBNREF4T25SbGMzUXViVE4xT0E9PQ==&force=1&separate=1" \
-H "Authorization: AccessKey:EncodeSign" \
--url "<http://mgrDomain/fops>"