Basicnet Protocol Documentation
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Documentación
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- go
Línea de trabajo
En el issue no se menciona ningún archivo de documentación, prueba ni punto de entrada. Empieza por localizar la estructura de documentación existente del repositorio y compararla con el protocolo descrito aquí; se considera completado cuando los tipos de mensajes, los roles de los nodos, el ciclo de vida del stream, la gestión de playlists y el comportamiento de node-status están documentados de forma clara y coherente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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)
- Lenguaje dominante
- Go
- Estrellas
- 18
- Forks
- 6
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de livepeer/go-livepeer-basicnet
-
Transcoder error feedbackAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
livepeer/go-livepeer-basicnet#39 · 1 reacción ·
-
Routing LoopsAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
livepeer/go-livepeer-basicnet#37 · 2 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
livepeer/go-livepeer-basicnet#34 · 3 comentarios · 2 reacciones ·
-
Code generation for messagesAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
livepeer/go-livepeer-basicnet#33 · 5 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
livepeer/go-livepeer-basicnet#31 · 5 comentarios ·
Todos los issues de livepeer/go-livepeer-basicnet
Issues similares
-
agentic-workflows
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
priority/4/normal status/needs-triage type/bug/unconfirmed
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
authelia/authelia#13292 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
blinklabs-io/actions#138 ·
Los mantenedores suelen responder en 1 día
-
[UI] AlbumDetails collapses multi-genre list to single primary genre on viewports < lg breakpointAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día