Video Transcoding

最終更新日: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:出力する動画のフォーマット(例:mp4flv)。
  • |saveas/...:この部分は必須です。エンコード後のファイルの保存場所(バケット)とファイル名をURLセーフBase64形式で指定します。

詳細なパラメータの説明

下記の表は、live streaming transcodingでサポートされているパラメータおよびその説明を示しています。

パラメーター 必須 説明
op 必須 操作タイプを指定します。動画トランスコーディングの場合、この値を avthumb に設定してください。
format 必須 出力のフォーマットを指定します。サポートしているフォーマットには mp4flvm3u8(HLS)、mpd(DASH)などがあります。
r 必須ではありません 動画のフレームレート(fps)を指定します。一般的な値は 242530 などです。
注記: 動的なフレームレートキャプチャには対応していません。
ab 必須ではありません オーディオのビットレート(bit/s)を指定します。一般的な値:64k128k192k256k320k。(例:128k は 128 kbps を示します。)
vb 必須ではありません 動画のビットレート(bit/s)を指定します。動的ビットレートに対応しています。一般的な値:128k1.25m5m。(例:128k は128 kbps、1.25m は1.25 Mbps を示します。)
vbRatio 必須ではありません 動画ビットレートを係数として指定します。出力動画のビットレートは、入力動画のビットレートにこの係数を掛けた値になります。値の範囲は (0, 15] で、小数もサポートしています。
注記: 値が0または15を超える場合はエラーとなります。vbRatioにより計算された動画ビットレートが50Mbpsを超える場合、異常とみなされ、このパラメータは適用されません。vbRatiovbの両方が設定されている場合は、vbRatioが優先されます。
vcodec 必須ではありません 動画エンコーディング方式を指定します。指定しない場合は、システムが元のエンコーディング方式を維持しようとします。
オプション例:
libx264 - H.264
libvpx - VP8およびVP9(Googleコーデック)
libxvid - MPEG-4
libws265 - H.265
vvc - H.266
acodec 必須ではありません オーディオエンコーディング方式を指定します。指定しない場合、システムが元のエンコーディング方式を維持しようとします。MP3AACOGG などをサポートしています。
s いいえ 出力動画の解像度を幅x高さ(例:1920x1080)またはプリセット値で指定します。

幅×高さモード:幅と高さを明確に指定します。両方を指定した場合、トランスコーダはその値をそのまま使用します。注意:設定した解像度のアスペクト比が元の動画と異なる場合、(autoscaleautofillを使わない限り)画像が引き伸ばされたり圧縮されることがあります。

幅または高さモード:いずれか一方のみ指定した場合(例:1280xまたはx720)、トランスコーダは元のアスペクト比を維持しながらもう一方の値を自動計算します。例えば1920x1080の動画に対して1280xを指定すると、出力解像度は1280x720になります。
autoscale いいえ sパラメータと併用してアスペクト比の処理方法を制御します:
0(デフォルト):sパラメータで指定した解像度に厳密に処理を行い、画像が引き伸ばされる場合もあります。
1:元のアスペクト比を維持しながら、sで指定された範囲に収まるように映像をスケーリングします。出力映像の幅と高さはsで指定された値を超えません。
autofill いいえ sパラメータと併用して出力映像のサイズと余白を制御します:
1:目標アスペクト比が元の動画と異なる場合、元動画をsで指定した範囲にアスペクト比を維持したままスケーリングし、余白部分には黒帯(レターボックスまたはピラーボックス)が追加され、最終的に出力解像度がsで設定した値と一致します。
GOPInterval いいえ キーフレーム(Iフレーム)間の時間間隔をミリ秒(ms)単位で設定します。
注意:このパラメータはキーフレーム間のフレーム数を定義するgパラメータと競合するため、同時に使用できません。
rotate いいえ 時計回りの回転角度を指定します。90180270、またはauto(動画メタデータを元に自動的に回転と補正を行う)が選択可能です。デフォルトでは回転は適用されません。
an いいえ 音声ストリームを無効化します:
0(デフォルト):音声ストリームを保持します。
1:音声ストリームを削除し、出力動画には音声が含まれません。
vn いいえ 映像ストリームを無効化します:
0(デフォルト):映像ストリームを保持します。
1:映像ストリームを削除し、出力ファイルには(存在する場合)音声ストリームのみが含まれます。
moovToFront いいえ MP4ファイルにおけるmoovアトム(メタデータ)の配置位置を制御します:
0(デフォルト):メタデータをファイルの末尾に保持します。
1:メタデータをファイルの先頭に移動します。これにより、プレイヤーが初期化情報へ迅速にアクセスできるため、動画の再生開始時間が短縮される場合があります。
sar いいえ サンプルアスペクト比(Sample Aspect Ratio)。特定のピクセルアスペクト比(例:1:11: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 いいえ ピクセルフォーマットを設定します。例:yuv420pyuv422pyuv444pyuv420p(YUV 4:2:0)はウェブ向け動画配信で最も一般的なフォーマットであり、高い互換性と圧縮効率を提供します。
vprofile いいえ エンコーディングプロファイルを設定します。例えば、baselinemainhighhigh10high422high444(主に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 プリセット

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、アスペクト比を維持

注意:プリセット内の解像度は、アスペクト比を維持するためにソースビデオの特性に基づき調整される場合があります。

例1:MP4からFLVへのトランスコード

この例では、オブジェクトストレージバケット「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>"

例2:MP4からHLSへの変換(プリセット利用)

この例では、オブジェクトストレージのバケット「vod-wcs-test001」にある「test.mp4」という名前の動画をHLS形式にトランスコードします。これにより、.m3u8マニフェストファイルと、それに対応する.tsセグメントが生成されます。本例では、「video_16x9_150k」プリセットを使用します。このプリセットには以下のようなパラメータが含まれるのが一般的です:

  • ビットレート:150kbps
  • アスペクト比:16:9
  • 解像度:約400x224(またはソースに基づき調整)

メイントランスコード済みの.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>"