Capter un flux web avec streamlink
L'outil streamlink permet de capter un flux brut MPEG-TS transporté via http(s) issu de plateformes comme YouTube, pluto.tv ou france.tv. Voyons un usage simple ainsi que comment installer l'outil suivant l'OS.
Exemples d'utilisation
Enregistrer localement dans un fichier
On retire la verbosité (--quiet), on ajoute le preset de qualité (best) et on applique une redirection du flux :
1streamlink --quiet -o - "https://www.youtube.com/watch?v=l8PMl7tUDIE" best \
2> flux.ts
Piper dans un autre processus
Cette autre processus peut parser le flux pour faire des stats de discontinuités, des analyses par pid, procéder à une découpe horaire ...
1streamlink --quiet -o - "https://www.youtube.com/watch?v=l8PMl7tUDIE" best \
2| ./captncut-ts.php
Diffuser en multicast
Sur l'ip 239.0.0.1, port 1234, en udp :
1streamlink --quiet -o - "https://www.youtube.com/watch?v=l8PMl7tUDIE" best \
2| ffmpeg -re -f mpegts -i - -c copy -map 0 -f mpegts udp://239.0.0.1:1234
Installation
Debian 12 : oui
- paquet dans la distrib (
apt install streamlink)
1streamlink --version
2streamlink 5.2.1
AlmaLinux 10 : oui
1dnf install python3-packaging
2pip3 install streamlink
AlmaLinux 9 : oui
- pas packagé
pip3 install streamlinkok
AlmaLinux 8 : non
- pas de paquets dans la distrib
- openssl 1.1.1 ok
pip3 install streamlink(en root) marche mais crash au runtime
CentOS 7 : non
- pas de paquets dans la distrib (
dnf search streamlink) - s'installe avec
pip3 install streamlinkmais ne s'exécute pas à cause d'unopenssltrop vieux. Recompiler à la main openssl ? (mauvaise idée)
-> abandon
MacOS : oui
- paquet dispo dans
homebrew(brew install streamlink)
1streamlink --version
2streamlink 6.4.2
Multicast restreint à la boucle locale sous MacOS
Pour éviter de flooder le réseau :
1sudo route add 239.0.0.0/24 127.0.0.1 # activer
2netstat -nr -f inet | grep 239.0.0 # vérifier
3sudo route delete 239.0.0.0/24 127.0.0.1 # désactiver
Monitoring trafic avec bwm-ng (à faire pendant une diffusion multicast, cas qu'il faut qu'un client soit abonné au groupe multicast. Ex: mpv udp://239.0.0.1:1234)
1brew install bwm-ng
1 bwm-ng v0.6.3 (probing every 0.500s), press 'h' for help
2 input: getifaddrs type: rate
3 / iface Rx Tx Total
4 ==============================================================================
5 lo0: 628.23 KB/s 628.23 KB/s 1256.46 KB/s <--- trafic multicast
6 en3: 0.00 KB/s 0.00 KB/s 0.00 KB/s
7 ap1: 0.00 KB/s 0.00 KB/s 0.00 KB/s
8 en0: 0.00 KB/s 0.00 KB/s 0.00 KB/s
9 en1: 0.00 KB/s 0.00 KB/s 0.00 KB/s
10 en2: 0.00 KB/s 0.00 KB/s 0.00 KB/s
11 en5: 0.00 KB/s 11.93 KB/s 11.93 KB/s
12 bridge0: 0.00 KB/s 0.00 KB/s 0.00 KB/s
13 utun0: 0.00 KB/s 0.00 KB/s 0.00 KB/s
14 utun1: 0.00 KB/s 0.00 KB/s 0.00 KB/s
15 utun2: 0.00 KB/s 0.00 KB/s 0.00 KB/s
16 utun3: 0.00 KB/s 0.00 KB/s 0.00 KB/s
17 en14: 0.00 KB/s 0.00 KB/s 0.00 KB/s
18 en16: 0.00 KB/s 0.00 KB/s 0.00 KB/s
19 ------------------------------------------------------------------------------
20 total: 628.23 KB/s 640.16 KB/s 1268.39 KB/s
Ressources
- https://github.com/aerogus/dvbstream : routage multicast restreint sous Debian ou CentOS
- https://streamlink.github.io : site officiel de StreamLink
comments powered by Disqus