Streaming
Transcription
Streaming
Serveur Mul)media Streaming Objec)fs • Pourquoi du streaming ? – Diffusion live, à la demande • Quelques protocoles de streaming – (hCp), udp (unicast, mul)cast), rtp, rtsp • Formats vidéo streamable – Codecs et Encapsuleurs – Conversion avec ffmpeg et vlc • Serveur de streaming (diffusion) – Quick)me Streaming Server – VLC Contexte • Medias sur le web • Diffusion de flux audio/video en direct – Radio, Télévision, Surveillance • Diffusion à la demande (VOD) – En croissance ! DVD : -‐2% en 2011 VOD : +50% Téléchargement progressif • U)lise l’infrastructure existante – Protocole hCp – Géré par les navigateurs / lecteurs / plugin • Lent : u)lise TCP qui garan) la récep)on de tous les paquets • Peu de contrôle : impossible de lire des par)es pas encore téléchargées Architecture « classique » Web Client hCp Web Server Media Player Media Files Téléchargement progressif • Le client se connecte au serveur pour télécharger le fichier • Lecture « à la volée », dépendante de la qualité du réseau • Pas (peu) de moyen de protéger le fichier • Mécanisme gourmand en bande passante è Adapté pour du streaming à (très) pe)te échelle Solu)ons serveur de streaming • Webcas)ng, Livecas)ng, WebTV, Net Radio, VOD, Live TV, … à True Streaming • Diffusion de media « en direct » – Acquisi)on ; encodage à la volée • Diffusion de media « pré-‐enregistré » – Ré-‐encodage • Solu)on logicielle capable d’envoyer des flux de données via un protocole établi. • Ne prend pas en charge l’encodage è Ces deux fonc)ons sont déployées sur des machines dédiées (de préférence) Architecture « streaming » Web Client hCp Web Server Encoding Server Media Player Streaming protocol Streaming Server Media Files Protocoles réseaux pour le streaming Rappel TCP et UDP (Couche 4 du modèle OSI : Transport) • TCP = Transmission Control Protocol – Transfert fiable par l’établissement d’une session de connexion – Poten)ellement lent car s’assure du bon transport des paquets – U)lisé par l’applica)on HTTP • UDP = User Datagram Protocol – Non fiable : perte possible de paquets – Somme de contrôle (checksum) – U)lisé pour le transfert rapide de pe)ts paquets – Pour des applica)ons qui peuvent tolérer quelques pertes Diffusion vers plusieurs destinataires è TCP ou UDP è UDP Mul)cast to group Mul)cast • Pas de limita)on sur les groupes • Taille, localisa)on • Joindre, quiCer • L’émeCeur ne connaît pas les des)nataires • La diffusion est gérée par les routeurs • Adresses Mul)cast : 224.0.0.1 à 239.255.255.254 224.0.0.1 -‐ 224.0.0.255 : Réservé pour les routeurs 224.0.1.0 -‐ 238.255.255.255 : Réservés 224.0.19.0 -‐ 224.0.19.63 (Walt Disney) 239.0.0.0 -‐ 239.255.255.255 : Administra)on 239.192.0.0 -‐ 239.192.63.255 : Organisa)on 239.255.0.0 -‐ 239.255.255.255 : Privé Real-‐)me Transport Protocol (RTP) • U)lisé pour la diffusion de contenu temporel – Audio/Vidéo conférence (Live streaming) • U)lise UDP : pas de contrôle de qualité à RTCP à Unicast / Mul)cast • Ajoute l’informa)on sur le séquencement et la synchronisa)on des paquets Real-‐)me Transport Control Protocol (RTCP) • Assure le contrôle (rapport) de récep)on des paquets RTP • Rapports envoyés périodiquement par le(s) récepteur(s) de paquets RTP • Es)me le nombre de paquets perdus è L’applica)on qui émet les paquets RTP peut réagir en fonc)on des rapports RTCP Real Time Streaming Protocol (RTSP) • Permet de commander la diffusions des flux – PLAY, PAUSE, STOP, … • Hérite du fonc)onnement de HTTP – Dialogue Client / Serveur • U)lise RTP pour le transfert des médias – RTCP pour le contrôle de qualité • Supporte le Mul)cast mais peu u)lisé Real Time Streaming Protocol (RTSP) Formats vidéo pour le streaming Conteneur vidéo • avi , mpg , mov , mp4 , flash sont des conteneurs vidéos – comporte plusieurs flux audios et/ou vidéos • Chaque flux et compressé par un encodeur/ décodeur (=codec) – paramètres • Pas de correspondance entre les conteneurs et les codecs • Les conteneurs / codecs ne sont pas tous streamable Les principaux codecs vidéo • MPEG-‐1 : Peu de compression, encodage rapide • MPEG-‐2 : U)lisé par les DVD, compression coûteuse • MPEG-‐4 : Meilleur que MPEG-‐2 pour des faibles bitrate, le plus courant – Part 2 : DIVX – Part 10 : H264 • WMV : MicrosoI • RealVideo : Real Networks Les principaux codecs audio • MPEG-‐1&2 : Peu de compression, encodage rapide • MPEG-‐3 : Très populaire • MPEG-‐4 : Plus performant que MP3 – M4A, AAC (iPod) • OGG : Libre et performant • WMA, RealAudio, … Les principaux conteneurs audio/vidéo hCp://en.wikipedia.org/wiki/Comparison_of_container_formats Les principaux conteneurs audio/vidéo MPEG PS MPEG-‐1, MPEG-‐2, H264 MPEG-‐1, MPEG-‐2, MPEG-‐3, MP4A è Program Stream (DVD) MPEG TS MPEG-‐1, MPEG-‐2, DIVX, H264 MPEG-‐1, MPEG-‐2, MPEG-‐3, MP4A è Transport Stream (Streaming) Conteneurs adaptés pour le streaming : à MPEG-‐4 , MPEG TS , MOV , OGG , ASF , REAL hCp://wiki.videolan.org/Codec Mul) bitrate streaming • Plusieurs flux disponibles à différents taux de compression • Le serveur diffuse le flux le plus adapté à l’encombrement / débit du réseau • Nécessite des rapports RTCP Ou)ls open source pour l’encodage vidéo • ffmpeg ffmpeg -‐i video.avi -‐vcodec mpeg4 -‐b 800k -‐acodec mp2 -‐ab 64k video.mpg • VLC vlc video.avi -‐-‐sout="#transcode{vcodec=h264, vb=800,acodec=mp4a,ab=64}:standard{access=file,mu x=ts,dst=‘video.mpg’} " Serveurs de streaming Source: wikipedia QuickTime Streaming Server à Darwin Streaming Server -‐ Open Source -‐ Mul) plateforme -‐ hCp://dss.macosforge.org/ -‐ Protocoles RTP, RTCP et RSTP -‐ Support MPEG-‐1/2/3/4 (MOV) à Suite QuickTime (Player, Pro, Broadcaster) QuickTime Streaming Server • Diffusion de médias en direct – Quick)me Broadcaster • Vidéo à la demande • Diffusion de playlists à Unicast / Mul)cast QuickTime Streaming Server • Lancement du serveur > sudo /usr/sbin/QuickTimeStreamingServer • Interface d’administra)on (web) > /usr/sbin/streamingadminserver.pl • Configura)on simple avec interface web Lecture via rtsp://IP.DU.SERVEUR:554/video VideoLAN (VLC) • Client Media Player très populaire -‐ -‐ -‐ -‐ Open Source Mul) plateforme Français ! hCp://www.videolan.org/ • Conversion de formats – hCp://wiki.videolan.org/Codec • Serveur de streaming VideoLAN (VLC) -‐ Protocoles HTTP, UDP, RTP, RTCP, RSTP -‐ Codec vidéo : à peu près tout -‐ Transcodage = encodage « à la volée » -‐ Interface graphique et Telnet (pour la vod) VideoLAN (VLC) • VideoLAN Manager (VLM) – Changer préférence VODrtsp server IP.DU.SERVER:5554 – Ac)ver le server vlc avec telnet : vlc –I telnet –d $ telnet localhost 4212 (pwd=admin) > new video vod enabled > setup video input video.mpg à Lecture via vlc rtsp://server:5554/video VideoLAN (VLC) • Exemple de diffusion avec transcodage à la volée : > new test broadcast enabled loop > setup test input video.avi > setup test output #transcode {vcodec=mp2v, vb=4096, scale=1, acodec=mpga, ab=512}:std{access=udp, mux=ts, dst=212.27.38.253:1234} > control test play • Lecture depuis 212.27.38.254 > vlc udp://:1234 VOD Webcam > new camera vod > setup camera input "qtcapture://" > setup camera output #transcode{vcodec=mp4v,vb=1024,chroma=Y UVA} > setup camera enabled FFMPEG • ffmpeg -‐i Barbapapa.avi -‐vcodec mpeg4 -‐b 9000k -‐acodec aac -‐ab 128k -‐t 2 test.mov • ffmpeg -‐i Barbapapa.avi -‐vcodec mpeg4 -‐b 9000k -‐acodec aac -‐ab 128k -‐t 2 test.mov -‐vcodec mpeg4 -‐b 90k -‐newvideo