ffmpeg_live_streaming
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| ffmpeg_live_streaming [2025/04/23 20:11] – luc | ffmpeg_live_streaming [2025/04/23 20:29] (Version actuelle) – luc | ||
|---|---|---|---|
| Ligne 85: | Ligne 85: | ||
| } | } | ||
| </ | </ | ||
| + | On notera que nous avons choisi de mettre les fichiers écrits par HLS dans un dossier dans la RAM (/dev/shm, pour être plus rapide que sur la carte SD et éviter d'user celle-ci), il convient que ce dossier existe et soit accessible en écriture à l'user du serveur web (www-data ou nginx, selon la config). | ||
| + | Il faut ensuite gérer 2 vhost : un pour le flux HLS, l' | ||
| + | < | ||
| + | # Servir le flux HLS (de simples fichiers, mais avec les headers qui vont bien) | ||
| + | # mon_vhost.conf ou inclus dans le bloc http | ||
| + | server { | ||
| + | listen 8080; | ||
| + | |||
| + | location /hls { | ||
| + | # Disable cache | ||
| + | add_header ' | ||
| + | |||
| + | # CORS setup | ||
| + | add_header Access-Control-Allow-Origin *; | ||
| + | add_header ' | ||
| + | add_header ' | ||
| + | |||
| + | # allow CORS preflight requests | ||
| + | if ($request_method = ' | ||
| + | add_header ' | ||
| + | add_header ' | ||
| + | add_header ' | ||
| + | add_header ' | ||
| + | return 204; | ||
| + | } | ||
| + | |||
| + | types { | ||
| + | |||
| + | application/ | ||
| + | video/mp2t ts; | ||
| + | } | ||
| + | |||
| + | root /dev/shm; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | On notera l' | ||
| + | On notera les directives pour autoriser les flux qui viennent d' | ||
| + | |||
| + | < | ||
| + | # Servir le site web qui contiendra le player (simple fichier html) | ||
| + | # mon_vhost.conf ou autre ou inclus dans le bloc http | ||
| + | |||
| + | # dans un bloc server { }, on peut juste servir le fichier | ||
| + | |||
| + | root / | ||
| + | |||
| + | location / { | ||
| + | add_header Access-Control-Allow-Origin *; | ||
| + | if ($request_method = ' | ||
| + | add_header ' | ||
| + | add_header ' | ||
| + | } | ||
| + | |||
| + | # First attempt to serve request as file, then | ||
| + | # as directory, then fall back to displaying a 404. | ||
| + | try_files $uri $uri/ =404; | ||
| + | } | ||
| + | </ | ||
| + | On notera les entêtes pour les autorisations de CORS (Cross Origins) bla bla... | ||
| + | |||
| + | === Page web avec le lecteur === | ||
| + | On va s' | ||
| + | ``` | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | <link href="// | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | |||
| + | <video | ||
| + | class=" | ||
| + | controls | ||
| + | preload=" | ||
| + | width=" | ||
| + | height=" | ||
| + | data-setup=" | ||
| + | > | ||
| + | <source src=" | ||
| + | <p class=" | ||
| + | To view this video please enable JavaScript, and consider upgrading to a | ||
| + | web browser that | ||
| + | <a href=" | ||
| + | > | ||
| + | > | ||
| + | </p> | ||
| + | </ | ||
| + | |||
| + | <script src=" | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | ``` | ||
| + | On notera l'url vers le flux HLS configuré précédemment. | ||
| + | |||
| + | |||
| + | Voilà, on a ce qu'il faut pour consommer le flux video, il faut maintenant le capturer, c'est le travail de ffmpeg. | ||
| Ligne 114: | Ligne 215: | ||
| </ | </ | ||
| - | Les bcmm2835 | + | Les bcm2835 |
| => On apprend qu' | => On apprend qu' | ||
| + | |||
ffmpeg_live_streaming.1745439084.txt.gz · Dernière modification : de luc
