-
Notifications
You must be signed in to change notification settings - Fork 34
ITEP-68945 ITEP-68944 Using WebRTC for frames streaming #396
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
… into ITEP-68945-webrtc-raw
| @@ -0,0 +1,21 @@ | |||
| MIT License | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't need individual license call out for each dependency. Those are done in third-party-programs.txt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements WebRTC-based video streaming to replace MQTT-based frame publishing in the SceneScape system. The changes introduce real-time video streaming capabilities through MediaMTX and nginx proxy services, improving performance and user experience.
- Replaced MQTT frame publishing with WebRTC streaming infrastructure
- Added MediaMTX and nginx proxy services for secure TLS connections
- Modified calibration and visualization components to use video streams instead of static images
Reviewed Changes
Copilot reviewed 28 out of 29 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/certificates/Makefile | Added certificate generation for MediaMTX proxy service |
| scene_common/src/transform.py | Added type checking in CameraPose constructor for intrinsics parameter |
| sample_data/nginx.conf | New nginx configuration for MediaMTX proxy with SSL support |
| sample_data/mediamtx.yml | MediaMTX configuration with WebRTC and TURN server settings |
| sample_data/docker-compose-dls-perf.yml | Added MediaMTX, nginx, and coturn services to Docker composition |
| manager/src/templates/sscape/sceneDetail.html | Replaced image elements with video elements for camera feeds |
| manager/src/templates/cam/cam_calibrate.html | Updated calibration view to use video instead of images |
| manager/src/static/js/webrtc_reader.js | New WebRTC reader implementation for video stream handling |
| manager/src/static/js/viewport.js | Modified projection to use video texture instead of image loading |
| manager/src/static/js/sscape.js | Removed MQTT image handling and added WebRTC stream initialization |
| dlstreamer-pipeline-server/user_scripts/gvapython/sscape/sscape_adapter.py | Removed MQTT frame publishing functionality |
| dlstreamer-pipeline-server/retail-config.json | Updated pipeline configurations with WebRTC destinations and watermarks |
| docs/user-guide/Getting-Started-Guide.md | Added instructions for hosts file configuration and SSL certificate installation |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
scene_common/src/transform.py
Outdated
| """ | ||
|
|
||
| self.intrinsics = intrinsics | ||
| if type(intrinsics) != CameraIntrinsics: |
Copilot
AI
Sep 17, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use isinstance() instead of type() for type checking to support inheritance and follow Python best practices.
| if type(intrinsics) != CameraIntrinsics: | |
| if not isinstance(intrinsics, CameraIntrinsics): |
| "destination": { | ||
| "frame": { | ||
| "type": "webrtc", | ||
| "peer-id": "camera2", | ||
| "bitrate": 5000, | ||
| "overlay": false | ||
| } | ||
| }, |
Copilot
AI
Sep 17, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The 'destination' configuration is placed outside the 'payload' object, which is inconsistent with the structure in other configuration files where it appears inside 'payload'. This should be moved inside the 'payload' object for consistency.
|
Could you please add a "How to Verify" section in your description or Testing Scenarios section. |
So far, I only run demo. I've added new instructions in user guide, aside from that, deployment process looks the same. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
doc looks good
📝 Description
Manager app:
live-viewbutton from scene detail viewloadingvideo to play before WebRTC connection is establishedDLS Pipeline Server:
Media Server (MediaMTX)
Coturn:
Nginx:
Samples:
Docs:
✨ Type of Change
Select the type of change your PR introduces:
🧪 Testing Scenarios
Describe how the changes were tested and how reviewers can test them too:
✅ Checklist
Before submitting the PR, ensure the following: