Skip to content

Conversation

sirknightj
Copy link
Contributor

Issue #, if available:

  • N/A

What was changed?

  • Implemented storage session support for master and viewer participants
    • "Send video" switch & UI
    • Error pop-ups for invalid audio+video configurations (video+audio required for ingestion master participant; audio-only or no audio and no video for viewer participants)
  • Added additional enhancements to overall sample app experience including:
    • Implemented toast pop-ups for important RTCPeerConnection state changes (connected/failed/disconnected)
    • Fixed the "send audio" switch label to be properly shown on the configuration screen
    • Removed the remote-video view in ingestion mode master participant mode
    • Removed the self-video view in ingestion mode viewer participant mode
  • Fixed the pending ice candidates queue logic to allow for ICE candidates to be properly added to the PeerConnection before the offer is received.

Why was it changed?

  • Support for KVS WebRTC ingestion
  • The demo app provides demonstrates connecting to the storage session and sending the media for ingestion & storage

How was it changed?

  • Imported AWSKinesisVideoWebRTCStorage client to be able to call JoinStorageSession and JoinStorageSessionAsViewer to have the storage session initiate the WebRTC connection
  • Added UI validation to restrict ingestion viewers from using video with ingest media (audio-only restriction)
  • Updated video track creation logic to conditionally create video track based on user selection
  • Adjusted viewer logic to wait for offers from storage session and respond with an answer, instead of creating their own offers (switch the logic from controlling peer to controlled peer)
  • Adjust the UI to hide the unused views in the ingestion mode (self-view in viewer mode, remote view in master mode)

What testing was done for the changes?

  • Tested peer-to-peer connection with the JS chrome (iOS master & iOS viewer)
    • In audio-only mode, video+audio mode, and video-only mode
  • Tested WebRTC ingestion
    • iOS Master participant + Chrome viewer participant
    • Chrome Master participant + iOS viewer participant
  • Checked that the toasts show up when

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

…Viewer), new send video switch, toast notification for WebRTC connected, remove manual JoinStorageSession button, fullscreen ingestion view, updated ice candidate queue logic
self.isMaster = isMaster
self.signalingChannelArn = signalingChannelArn
self.isVideoEnabled = isVideoEnabled
self.storageSessionAttempts = []
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

connectionAttempts

@sirknightj sirknightj marked this pull request as ready for review October 9, 2025 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants