Rúbrica d'Avaluació: Streaming de Vídeo amb Nginx-RTMP
Informació General
- Pràctica: Streaming de Vídeo amb Nginx-RTMP i Docker
- Puntuació total: 10,0 punts
- Temps estimat: 4-5 hores
- Modalitat: Individual
1. Personalització del Projecte (1,5 punts)
| Criteri | Excel·lent (1,5) | Notable (1,0) | Acceptable (0,5) | Insuficient (0) |
|---|---|---|---|---|
| Nom i cognom en configuracions | Totes les aparicions de NOMCOGNOM substituïdes correctament en docker-compose.yml, nginx.conf, index.html, URLs RTMP/HLS | 1-2 aparicions sense substituir o amb errors tipogràfics | 3-4 aparicions sense substituir | Més de 5 aparicions sense substituir o sense cap personalització |
| Container i network amb nom personalitzat | Container streaming-video-NOMCOGNOM, network streaming-net-NOMCOGNOM, hostnames correctes |
Només 2 dels 3 elements personalitzats | Només 1 dels 3 elements personalitzat | Cap element personalitzat |
| Nom visible al stream | Nom complet visible durant tot el stream (mínim 80% del temps) amb element de text o superposició | Nom visible però només parcialment (30-80% del temps) | Nom visible menys del 30% del temps | Nom no visible al stream |
Evidències requerides:
- Captures de docker ps mostrant el nom del contenidor personalitzat
- Captura del stream reproduint-se amb el nom visible
- Fitxers de configuració amb NOMCOGNOM substituït
2. Configuració del Servidor Nginx-RTMP (2,5 punts)
| Criteri | Excel·lent (2,5) | Notable (1,8) | Acceptable (1,0) | Insuficient (0) |
|---|---|---|---|---|
| Servidor RTMP funcional | Servidor RTMP escoltant al port 1935, accepta connexions d'OBS/ffmpeg, application live configurada correctament |
Servidor funcional però amb configuració incompleta (falta allow publish all o paràmetres HLS) |
Servidor arranca però no accepta streams correctament | Servidor no arranca o errors de configuració |
| Generació HLS | HLS activat, genera fitxers .m3u8 i .ts correctament, hls_path /tmp/hls, fragments de 3 segons |
HLS funcional però amb paràmetres subòptims (fragments massa grans/petits) | HLS genera fitxers però amb errors (segments inconsistents) | HLS no funcional |
| Transcoding a múltiples qualitats | Exec ffmpeg configurat correctament, genera 3 qualitats (1080p, 720p, 480p) amb bitrates adequats | Genera 2 qualitats correctament | Genera només 1 qualitat o amb bitrates incorrectes | Transcoding no funcional |
| Configuració HTTP | Servidor HTTP al port 8080, /hls serveix fitxers correctament amb CORS, MIME types correctes (.m3u8, .ts) |
HTTP funcional però falta CORS o MIME types incorrectes | HTTP serveix fitxers però amb errors de configuració | HTTP no funcional |
Evidències requerides:
- Fitxer nginx.conf amb configuració completa
- Captura de docker logs mostrant Nginx iniciat sense errors
- Captura de ls -lh /tmp/hls/ mostrant fitxers .m3u8 i .ts generats
- Captura de les estadístiques (http://localhost:8080/stat)
3. Streaming RTMP (2,0 punts)
| Criteri | Excel·lent (2,0) | Notable (1,4) | Acceptable (0,7) | Insuficient (0) |
|---|---|---|---|---|
| Configuració d'OBS Studio o ffmpeg | OBS/ffmpeg configurat correctament amb URL rtmp://localhost:1935/live/stream-NOMCOGNOM, paràmetres d'encoding adequats (H.264, AAC) |
Configurat correctament però amb paràmetres subòptims (bitrate massa alt/baix) | Stream es transmet però amb errors intermitents | No aconsegueix transmetre |
| Qualitat del stream | Stream fluïd sense talls, qualitat visual/audio correcta, frame rate estable (~30 fps) | Petits talls ocasionals (< 5% del temps) o frame rate lleugerament inestable | Talls freqüents (5-20% del temps) o qualitat degradada | Stream amb talls constants o qualitat inutilitzable |
| Element visual personalitzat | Element de text amb nom complet sempre visible, ben posicionat, llegible | Text visible però parcialment tapat o difícil de llegir | Text visible de forma intermitent | Sense text personalitzat |
Evidències requerides:
- Captura de la configuració d'OBS Studio (Configuració → Emissió) o comanda ffmpeg completa
- Captura del stream en directe amb el nom visible
- Captura de VLC reproduint http://localhost:8080/hls/stream-NOMCOGNOM.m3u8
4. Pàgina Web de Reproducció (1,5 punts)
| Criteri | Excel·lent (1,5) | Notable (1,0) | Acceptable (0,5) | Insuficient (0) |
|---|---|---|---|---|
| Personalització HTML | Títol VOSTRENOM VOSTRECOGNOM, stream key personalitzat, URLs RTMP/HLS correctes amb NOMCOGNOM |
1-2 elements sense personalitzar | 3-4 elements sense personalitzar | Sense personalització o HTML per defecte |
| Reproductor funcional | Video.js reprodueix stream HLS correctament, controls funcionals, adaptive bitrate funciona | Reprodueix però sense adaptive bitrate | Reprodueix amb errors o talls | No reprodueix |
| Informació del stream | Mostra stream key, URL RTMP, URL HLS, enllaç a estadístiques, tot funcional | Falta 1 element d'informació | Falten 2 elements | Informació incompleta o incorrecta |
Evidències requerides:
- Captura de http://localhost:8080 amb el títol personalitzat
- Captura del reproductor Video.js reproduint el stream
- Fitxer index.html personalitzat
5. Streaming Adaptatiu i HLS (2,0 punts)
| Criteri | Excel·lent (2,0) | Notable (1,4) | Acceptable (0,7) | Insuficient (0) |
|---|---|---|---|---|
| Múltiples qualitats HLS | 3 qualitats generades (1080p, 720p, 480p) amb variants declarades, playlist mestre funcional | 2 qualitats generades correctament | Només 1 qualitat disponible | Transcoding no funcional |
| Paràmetres de transcoding | Codecs correctes (libx264, aac), bitrates adequats (2500k/1000k/500k), resolutions correctes, preset veryfast, GOP 60 frames |
1-2 paràmetres subòptims | 3-4 paràmetres incorrectes | Paràmetres incorrectes o transcoding falla |
| Commutació automàtica de qualitat | Video.js commuta automàticament entre qualitats segons l'ample de banda, smooth transitions | Commutació manual funcional però no automàtica | Canvi de qualitat amb talls | No permet canviar qualitat |
Evidències requerides:
- Captura de /tmp/hls/ mostrant subdirectoris per cada qualitat
- Captura del fitxer .m3u8 mestre mostrant les 3 variants
- Captura del reproductor mostrant opcions de qualitat
6. Documentació i Lliurament (1,0 punt)
| Criteri | Excel·lent (1,0) | Notable (0,7) | Acceptable (0,4) | Insuficient (0) |
|---|---|---|---|---|
| Captures de pantalla | Totes les 6 captures obligatòries presents, clares, amb nom visible, timestamps recents | Falta 1 captura o alguna poc clara | Falten 2-3 captures | Falten més de 3 captures |
| Fitxers de configuració | docker-compose.yml, nginx.conf, index.html tots presents i personalitzats | 1 fitxer falta o sense personalitzar | 2 fitxers falten | Més de 2 fitxers falten |
| Respostes a qüestions | Taula RTMP/HLS/DASH completa i correcta, càlculs de bitrate correctes amb operacions, explicacions de transcoding clares i completes | 1 qüestió incorrecta o incompleta | 2 qüestions incorrectes | Més de 2 qüestions incorrectes o sense respondre |
| Reflexió final | 200-300 paraules, analitza dificultats reals, compara RTMP vs HLS amb criteris tècnics, proposa millores viables | Massa curta (< 200 paraules) o massa genèrica | Massa curta i genèrica | Absent o < 100 paraules |
Evidències requerides: - Document PDF amb portada (nom complet i data) - 6 captures de pantalla obligatòries - 3 fitxers de configuració (YAML, nginx.conf, HTML) - Respostes a les 3 qüestions amb taules i càlculs - Reflexió final (200-300 paraules)
Penalitzacions
| Situació | Penalització |
|---|---|
| Sense personalització real (NOMCOGNOM no substituït en cap fitxer) | -2,0 punts |
| Transcoding no funcional (només 1 qualitat disponible) | -1,5 punts |
| Nom no visible al vídeo (cap element de text amb nom de l'estudiant) | -1,0 punt |
| Còpia detectada (projecte idèntic a un altre estudiant, sense personalització única) | Qualificació 0 |
| Contrasenyes per defecte no canviades (si n'hi ha) | -0,5 punts |
| Contenidor no arranca (errors de sintaxis YAML, configuració Nginx incorrecta) | -2,0 punts |
| Captures sense timestamp o massa antigues (> 1 setmana) | -0,5 punts |
Bonificacions Opcionals
| Activitat | Bonificació |
|---|---|
Gravació del stream (configuració de record a Nginx-RTMP, fitxers .flv generats) |
+0,5 punts |
| Streaming a plataforma externa (restream a YouTube/Twitch simultàniament) | +0,5 punts |
| Autenticació RTMP (configuració amb tokens o contrasenyes per publicar) | +0,5 punts |
| Pàgina web avançada (estadístiques en temps real, múltiples streams, disseny personalitzat) | +0,5 punts |
Màxim bonificació total: +1,5 punts (nota màxima limitada a 10,0)
Taula Resum de Puntuació
| Secció | Punts |
|---|---|
| 1. Personalització del projecte | 1,5 |
| 2. Configuració Nginx-RTMP | 2,5 |
| 3. Streaming RTMP | 2,0 |
| 4. Pàgina web de reproducció | 1,5 |
| 5. Streaming adaptatiu i HLS | 2,0 |
| 6. Documentació i lliurament | 1,0 |
| TOTAL | 10,0 |
Criteris de Superació
Per superar la pràctica (nota ≥ 5,0) cal:
- ✅ Servidor Nginx-RTMP funcional amb HLS activat
- ✅ Stream RTMP operatiu (OBS o ffmpeg)
- ✅ Pàgina web reprodueix el stream
- ✅ Personalització amb NOMCOGNOM en tots els fitxers
- ✅ Mínim 2 qualitats de vídeo generades
- ✅ Nom visible al stream emès
- ✅ Documentació completa amb captures i fitxers
Recomanacions per Excel·lència (nota ≥ 9,0)
- 🌟 Totes les configuracions personalitzades correctament
- 🌟 3 qualitats HLS funcionant amb commutació automàtica
- 🌟 Stream de qualitat professional (sense talls, bona resolució)
- 🌟 Pàgina web ben dissenyada amb tota la informació
- 🌟 Documentació impecable amb captures clares
- 🌟 Reflexió profunda amb anàlisi tècnica
- 🌟 Alguna bonificació opcional implementada
Data de creació: Gener 2025 Autor: Curs M0375 - Serveis de Xarxa i Internet