OSS では、Real-Time Messaging Protocol (RTMP) を使用して、H.264 でエンコードされたビデオストリームと Advanced Audio Coding (AAC) でエンコードされたオーディオストリームを OSS に取り込むことができます。 OSS にアップロードされたオーディオやビデオデータは、オンデマンドで再生したり、遅延の影響を受けないシナリオでライブストリーミングに使用したりできます。

RTMP に準拠してオーディオやビデオデータを OSS にアップロードする場合、次の制限に注意する必要があります。

  • RTMP を使用すると、ビデオまたはオーディオストリームのみを取り込み可能で、ストリームをプルすることはできません。
  • H.264 形式のビデオストリームを取り込む必要があります。
  • オーディオストリームはオプションで、AAC 形式でなければなりません。 OSS は、他の形式のオーディオストリームを破棄します。
  • オーディオやビデオデータのダンプに使用できるのは、HTTP Live Streaming (HLS) のみです。
  • LiveChannel は、一度に 1 つのクライアントから取り込まれたストリームを受信できます。

以降のセクションでは、OSS にオーディオとビデオのストリームを取り込む方法と、ビデオオンデマンド (VOD) 再生やライブストリーミング用にアップロードされたオーディオやビデオデータを再生する方法について説明します。

OSS へのオーディオストリームやビデオストリームの取り込み

  • アップストリーミング URL の取得

    SDK を使用して PutLiveChannel API を呼び出し、LiveChannel を作成して、アップストリーミング URL を取得します。 バケット ACL が公開読み取り/書き込みに設定されている場合、取得したアップストリーミング URL を直接使用できます。 それ以外の場合、署名をアップストリーミング URL に追加します。

    次のコードは、Python SDK を例として使用し、署名なしと署名付きのアップストリーミング URL を取得する方法を示します。

    from oss2 import *
    from oss2.models import *
    host = "oss-cn-hangzhou.aliyuncs.com" #just for example
    accessid = "your-access-id"
    accesskey = "your-access-key"
    bucket_name = "your-bucket"
    channel_name = "test-channel"
    auth = Auth(accessid, accesskey)
    bucket = Bucket(auth, host, bucket_name)
    channel_cfg = LiveChannelInfo(target = LiveChannelInfoTarget())
    channel = bucket.create_live_channel(channel_name, channel_cfg)
    publish_url = channel.publish_url
    signed_publish_url = bucket.sign_rtmp_url("test-channel", "playlist.m3u8", 3600)

    次の例は、取得したアップストリーミング URL を示します。

    publish_url = rtmp://your-bucket.oss-cn-hangzhou.aliyuncs.com/live/test-channel
    signed_publish_url = rtmp://your-bucket.oss-cn-hangzhou.aliyuncs.com/live/your-channel? OSSAccessKeyId=LGarxxxxxxHjKWg6&playlistName=t.m3u8&Expires=1472201595&Signature=bjKraZTTyzz9%2FpYoomDx4Wgh%2FlM%3D" 
  • ストリームの取り込みに FFmpeg を使用

    次のコマンドを実行すると、FFmpeg を使用してローカルビデオファイルを OSS にアップロードできます。

    ffmpeg -i 1.flv -c copy -f flv "rtmp://your-bucket.oss-cn-hangzhou.aliyuncs.com/live/test-channel? OSSAccessKeyId=LGarxxxxxxHjKWg6&Expires=1472199095&Signature=%2FAvRo7FTss1InBKgwn7Gz%2FUlp9w%3D"
  • ストリームの取り込みに OBS を使用

    [設定] をクリックします。 [URL] フィールドに、前の手順で取得したアップストリーミング URL を入力し、[OK] をクリックします。

    次の図に示すように、アップストリーミング URL がどのように分割されるのか注意する必要があります。

OSS にアップロードされたオーディオデータやビデオデータの再生

  • ライブストリーミング

    ストリームの取り込み中、HLS を使用して、次のプラットフォームにアップロードされているオーディオデータやビデオデータをさまざまな方法で再生できます。

    • Android や iOS などのモバイルプラットフォームでは、LiveChannel のストリーミング URL をブラウザーに入力します。
    • macOS プラットフォームでは、Safari でコンテンツを再生します。
    • PC では、VLC メディアプレーヤーをインストールして、コンテンツを再生します。

    アップロードされたオーディオデータやビデオデータをライブストリーミング用にスムーズに再生するには、FragDuration を小さな値 (2 秒など) に設定します。 group of picture (GOP) に固定値 (LiveChannel の FragDuration の値と同じ) を設定することもできます。 次の図は、OBS での GOP (キーフレーム間隔) の設定方法を示します。

  • VOD 再生

    ストリームの取り込み中、M3U8 オブジェクトをプッシュまたは更新するには、常にライブストリームが使用されます。 VOD 再生シナリオでは、ストリームの取り込み後に PostVodPlaylist API を呼び出して VOD 再生用の M3U8 オブジェクトをアセンブルし、オブジェクト URL を使用して、アップロードされたオーディオデータやビデオデータを再生する必要があります。

    VOD 再生シナリオでは、より大きな GOP を設定して、TS オブジェクトの数とビットレートを減らすことができます。