Basicnet Protocol Documentation
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Documentazione
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- go
Direzione di ricerca
Nell’issue non sono indicati file di documentazione, test o entry point. Inizia individuando la struttura di documentazione esistente del repository e confrontandola con il protocollo descritto qui; il lavoro è completato quando i tipi di messaggio, i ruoli dei nodi, il ciclo di vita dello stream, la gestione delle playlist e il comportamento di node-status sono documentati in modo chiaro e coerente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Super Rough Version
Message Types:
- Sub
- Data (video segment)
- Finish
- Cancel
- TranscodeResponse
- GetMasterPlaylist
- MasterPlaylistData
- NodeStatusReq
- NodeStatusData
Node Roles:
Broadcaster
- Sends video segments to its listeners
- If no listeners, drop the segments
- Broadcasts exist for each StrmID
Subscriber
- Receives video segments, and puts it into local video streams
- Subscribers exist for each StrmID
Relayer
- Receives video segments and calls the callback function.
- Relayers exist for each (MessageType, StrmID)
Protocol:
When a node wants to broadcast a stream:
- Create a local broadcaster, push Data to the broadcaster's listeners
- This can happen even when no one in the network wants the stream
When a node wants to subscribe to a stream:
- Create a local subscriber with the streamID
- This registers a callback, we usually put the data into a video stream in the caller
- Send Sub req to the network
When a node receives a Sub req:
- If there is a local broadcaster, add the requester's ID to its listener array
- If there is a local relayer, add the requester's ID to its listener array
- We assume the local relayer has already been created and the Sub req has been passed on.
- If there is a local subscriber and no local relayer, create a local relayer, add the requester's ID to its listener array
- If there is no local relayer, local subscriber, or broadcaster, create a local relayer, add the requester's ID to its listener array, and forward the request along.
When a node receives a Data req:
- If there is a local subscriber, send the data there
- If there is a local relayer, send the data there
- Otherwise, report an error
When a broadcaster finishes a stream:
- Send a Finish message to its listeners
When a node receives a Finish message:
- If there is a local subscriber, call it with EOF and delete it
- If there is a local relayer, forward the Cancel message to its listeners, and delete the relayer
When a node finishes subscribing (for example, player shuts down)
- Send a Cancel message to its upstream peer and delete the subscriber
When a node receives a Cancel message:
- If there is a local broadcaster, remove the peer from its listeners array.
- If there is a local relayer, remove the peer from its listeners array. If this makes the listeners array empty, remove the relayer.
The node sends a TranscodeResponse msg to the broadcasting node when it gets a transcode job from the blockchain.
- The broadcasting node should have set up a callback function to be able to receive the TranscodeResponse message (ReceivedTranscodeResponse)
StrmID might be confusing with MasterPlaylistID → Each master playlist contains multiple media playlists (represented by a single StrmID) - https://developer.apple.com/library/content/referencelibrary/GettingStarted/AboutHTTPLiveStreaming/about/about.html
The node populates the masterPlaylist map when it creates a new stream, and updates the masterPlaylist if it receives MasterPlaylistData.
The node sends out a GetMasterPlaylist request when it gets a media server video request
When a node receives a GetMasterPlaylist request:
- If we find the masterPlaylist in the local map, return it.
- If not
- If the nodeID from the streamID is the current node, we return a NotFound
- Otherwise, we forward it along, and create a local relayer if it doesn't already exist
When a node receives a MasterPlaylistData
- If we are the node requesting for it, give it to the requester
- If we are not the node requesting for it, we should have a local relayer, so relay the message along
NodeStatus works the same way as GetMasterPlaylist/MasterPlaylistData, it's used for getting a remote node's status (planning to use it for debugging)
- Lingua principale
- Go
- Stelle
- 18
- Fork
- 6
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di livepeer/go-livepeer-basicnet
-
Transcoder error feedbackAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
livepeer/go-livepeer-basicnet#39 · 1 reazione ·
-
Routing LoopsAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
livepeer/go-livepeer-basicnet#37 · 2 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
livepeer/go-livepeer-basicnet#34 · 3 commenti · 2 reazioni ·
-
Code generation for messagesAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
livepeer/go-livepeer-basicnet#33 · 5 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
livepeer/go-livepeer-basicnet#31 · 5 commenti ·
Tutte le issue di livepeer/go-livepeer-basicnet
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
[开源推荐] FCaptcha:可自行部署的开源验证码Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
521xueweihan/HelloGitHub#3789 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 12 giorni
-
stage-fail
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
siyuan-note/bazaar#2282 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
openshift/kube-compare#307 ·
I maintainer di solito rispondono entro 1 giorno