AWS Kinesis WebRTC Publisher

WebRTC Publisher configured for Amazon Kinesis.

Advanced
Bitrate
Video Resolution (ideal)
Video Framerate (ideal)
Audio/Video Inputs
Video Input Source
Audio Input Source
Audio Output Source
  "sources": [
    { "type": "application/webrtc", "src": "One2ManyWebRTC"}
  ]
}

Note: A live demo using AWS Kinesis. For another live working example try the Millicast Publisher and Subscriber example.

WebRTC Publisher configuration for Amazon Kinesis. Amazon Kinesis WebRTC is not a free tier and has charges.

Only one to many is possible for now until a custom WebSocket solution for group call peering is available.

Each individual stream is determined by a Signalling Channel that can be created in the console or API.

Requires including the AWS and Kinesis Javascript client SDK.

There is two methods to configure for AWS kinesis WebRTC streaming. Temporary AWS access and secret credentials can be supplied to the player with url signing done client side. Or with the use of AWS Lambda and API Gateway, Ice servers and the signed WebSocket server url can be obtained server side. With the use of Authorizers, generated Bearer tokens can be supplied for authorization to the api gateway. Create your own AWS Gateway api and Lambda functions. Example lambda functions for returning WebSocket servers and authorizers is supplied.

"kinesisvideo": {
            "publishUrl": "https://api.electroteque.org/publish",
            "publishToken": "eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0.jtz-Wru3hxJlLmaBcgPzHgLwn-wPHEgo_cRRFg6DhR0toIHFBPmKXDUTaVlG_jBCo9TQ8VPFXoI03UK4QBOYXcKdgog0EOf7._TKhqyvVDOkZLw83ObkXVg.NFTZe7zRQH-syEC6Zn2izADtOdbM6tGyrGycfd7DYh3M7npPdXltMu50uQG8Q-A-09p4-TimibbevbxxShBjTaCGwZBMfevdQW6KNQiLXAFQSP2rlqfTK-Kf-cT-RZ3_VeeGopbWhzJ-AJbwVDV3_uQ8R0yPP2TanfBiy8etb5mNzqexbqRp5PFI7P54amcj.qmVpOoZi1mByhN88n8Jl_7Rune9cTnBNTf6neWrpEQE",
}
"kinesisvideo": {
                "region": "",
            "credentials": {
                "accessKeyId": "",
                "secretAccessKey": ""
            }
}
    <div class="max-w-screen-2xl h-auto my-auto">
      <video class="video-js vjs-default-skin vjs-fluid " crossorigin="anonymous" controls="" id="aws-publisher"></video>
  </div>
  <script type="text/javascript">
  	var player = videojs("aws-publisher", {
    "plugins": {
        "peakmeter": {},
        "rtcpublisher": {
            "applicationName": "webrtc",
            "autoStartDevice": true,
            "debug": true,
            "floatedControls": false,
            "kinesisvideo": {
                "publishToken": "eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0.jtz-Wru3hxJlLmaBcgPzHgLwn-wPHEgo_cRRFg6DhR0toIHFBPmKXDUTaVlG_jBCo9TQ8VPFXoI03UK4QBOYXcKdgog0EOf7._TKhqyvVDOkZLw83ObkXVg.NFTZe7zRQH-syEC6Zn2izADtOdbM6tGyrGycfd7DYh3M7npPdXltMu50uQG8Q-A-09p4-TimibbevbxxShBjTaCGwZBMfevdQW6KNQiLXAFQSP2rlqfTK-Kf-cT-RZ3_VeeGopbWhzJ-AJbwVDV3_uQ8R0yPP2TanfBiy8etb5mNzqexbqRp5PFI7P54amcj.qmVpOoZi1mByhN88n8Jl_7Rune9cTnBNTf6neWrpEQE",
                "publishUrl": "https://api.electroteque.org/publish"
            },
            "maxDeviceDimensions": false,
            "maxHeight": 720,
            "maxWidth": 1280,
            "publisher": true,
            "recording": {
                "codec": "VP9",
                "mimeType": "video/webm",
                "name": "recording1"
            },
            "server": "kinesisvideo",
            "serverURL": "rtc.electroteque.org",
            "toggleScreen": true,
            "userData": {
                "param1": "value1"
            }
        }
    },
    "sources": [
        {
            "appName": "webrtc",
            "src": "One2ManyWebRTC",
            "type": "application/webrtc"
        }
    ]
});
  </script>