add comments about what to do

This commit is contained in:
Leandro Moreira
2024-05-02 22:27:44 -03:00
parent 933f1b1425
commit ad86b20c4a
3 changed files with 18 additions and 19 deletions

View File

@@ -4,31 +4,29 @@
sequenceDiagram sequenceDiagram
actor User actor User
box Navy Browser box Navy
participant browser participant browser
end end
browser->>+server: GET / User->>+browser: feed protocol, host, port, id, and opts
server->>+browser: 200 /index.html User->>+browser: click on [Connect]
User->>+browser: feed SRT host, port, and id
User->>+browser: click on [connect]
Note over server,browser: WebRTC connection setup Note over server,browser: WebRTC connection setup
browser->>+browser: create offer browser->>+browser: create WebRTC browserOffer
browser--)browser: WebRTC.ontrack(video) browser->>+server: POST /doSignaling {browserOffer}
browser->>+server: POST /doSignaling {offer}
server->>+server: set remote {offer}
server->>+browser: reply {answer}
browser->>+browser: set remote {answer}
Note over server,browser: WebRTC connection setup loop Async streaming
server--)streaming server: fetchMedia
loop Async SRT to WebRTC server--)server: ffmpeg::libav demux/transcode
server--)SRT: mpegFrom(SRT) server--)browser: sendWebRTCMedia
server--)browser: WebRTC.WriteSample(mpegts.PES.Data)
end end
server->>+browser: reply WebRTC {serverOffer}
browser--)User: render frames Note over server,browser: WebRTC connection setup
browser--)User: render audio/video frames
``` ```
# Architecture

View File

@@ -126,7 +126,7 @@ func (d *donutEngine) RecipeFor(server, client *entities.StreamInfo) *entities.D
} }
func (d *donutEngine) Appetizer() entities.DonutAppetizer { func (d *donutEngine) Appetizer() entities.DonutAppetizer {
// TODO: implement input based on param // TODO: implement input based on param to build proper SRT/RTMP/etc
return entities.DonutAppetizer{ return entities.DonutAppetizer{
URL: fmt.Sprintf("srt://%s:%d", d.req.SRTHost, d.req.SRTPort), URL: fmt.Sprintf("srt://%s:%d", d.req.SRTHost, d.req.SRTPort),
Format: "mpegts", // it'll change based on input, i.e. rmtp flv Format: "mpegts", // it'll change based on input, i.e. rmtp flv

View File

@@ -21,6 +21,7 @@ type WebRTCSetupResponse struct {
LocalSDP *webrtc.SessionDescription LocalSDP *webrtc.SessionDescription
} }
// TODO: make it agnostic from streaming protocol when implementing RTMP
type RequestParams struct { type RequestParams struct {
SRTHost string SRTHost string
SRTPort uint16 `json:",string"` SRTPort uint16 `json:",string"`