動的に映像の送信ビットレートを変更して通信量を抑えたい

THETA plugin のサンプルでは changeVideoSendBitrate を実行して、動的に映像の送信ビットレートを変更することができるようになっています。ネットワークの状況や閲覧者の端末操作の状況などに応じて、アプリケーションの判断で動的にビットレートを変更するといったことが可能です。changeVideoSendBitrate によって一時的に映像の送信ビットレートを抑えると、通信量料金は実際の通信量に応じて抑えられますが、Room 帯域幅予約料金についてはご利用になる範囲での最大値に基づいた料金となります。(Room 帯域幅予約設定値は、各拠点の映像/音声/画面共有を最高品質で配信するために、各拠点の送信ビットレートの最大値に合わせた設定が必要です。)

  • THETA plugin のサンプルでは、BITRATESに送信ビットレートのリストが格納されており、無線ボタンの短押しで changeVideoSendBitrate を実行して送信ビットレートを変更するようになっています。

サンプルコードの一部抜粋

private val BITRATES = IteratorUtils.loopingIterator(listOf(
        // 15Mbpsを利用するためには、connect optionsのmaxBitrateKbpsも15Mbpsに設定する必要があります
        // またRoom帯域の予約値もそれにあわせて変更が必要になります
        // 詳細は https://api.livestreaming.ricoh/document/%e6%83%b3%e5%ae%9a%e5%88%a9%e7%94%a8%e3%82%b7%e3%83%bc%e3%83%b3%e5%88%a5%e6%96%99%e9%87%91/ を参照ください
        // 15_000, // 15Mbps
        10_000, // 10Mbps
        5_000,  // 5Mbps
        1_000,  // 1Mbps
))

setKeyCallback(object : KeyCallback {
    override fun onKeyDown(keyCode: Int, keyEvent: KeyEvent) {
        if (keyCode == KeyReceiver.KEYCODE_WLAN_ON_OFF && mClient?.state == Client.State.OPEN) {
            val bitrateKbps = BITRATES.next()
            mClient?.changeVideoSendBitrate(bitrateKbps)
            LOGGER.debug("Target bitrate set to {}kbps", bitrateKbps)
            setBitrateToTextView(bitrateKbps)
            notificationAudioSelf()
        }
    }
}

この情報は役に立ちましたか?