Salta el contingut

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