Comment utiliser youtube-dl pour télécharger les flux en direct (live)?
je me demande si c'est possible ou non - quand je copie L'URL de la vidéo dans YouTube-dl il crache dehors
[https @ 0x7fc351416080] inflate return value: -3, incorrect header check
Last message repeated 15 times
après cela il crache hors de quelques lignes de texte rouge qui ne semble pas vouloir copier correctement, donc j'ai pris un morceau
Est-ce que quelqu'un sait si c'est possible?
2 réponses
je vais utiliser cet événement en direct comme exemple:
https://www.youtube.com/watch?v=6aXR-SL5L2o
tout d'abord, énumérez les formats pour la vidéo:
➜ youtube_live_test youtube-dl --list-formats https://www.youtube.com/watch\?v\=6aXR-SL5L2o
[youtube] 6aXR-SL5L2o: Downloading webpage
[youtube] 6aXR-SL5L2o: Downloading video info webpage
[youtube] 6aXR-SL5L2o: Extracting video information
[youtube] 6aXR-SL5L2o: Downloading formats manifest
[youtube] 6aXR-SL5L2o: Downloading MPD manifest
[info] Available formats for 6aXR-SL5L2o:
format code extension resolution note
91 mp4 144p HLS , h264, aac @ 48k
92 mp4 240p HLS , h264, aac @ 48k
93 mp4 360p HLS , h264, aac @128k
94 mp4 480p HLS , h264, aac @128k
95 mp4 720p HLS , h264, aac @256k (best)
choisissez le format que vous souhaitez télécharger, et récupérez L'URL HLS m3u8 de la vidéo à partir du Manifeste. Je vais être en utilisant 95 mp4 720p HLS , h264, aac @256k
pour cet exemple:
➜ youtube_live_test youtube-dl -f 95 -g https://www.youtube.com/watch\?v\=6aXR-SL5L2o
https://manifest.googlevideo.com/api/manifest/hls_playlist/id/6aXR-SL5L2o.1/itag/95/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/cmbypass/yes/goi/160/sgoap/itag%3D140/sgovp/itag%3D136/hls_chunk_host/r16---sn-ab5l6ne7.googlevideo.com/gcr/us/playlist_type/DVR/mm/32/mn/sn-ab5l6ne7/ms/lv/mv/u/pl/17/dover/3/fexp/9416126,9416891,9419451,9422596,9423554,9427790,9428193,9428398,9428974,9429011,9431012,9431164,9432683,9433096,9433946,9434343,9434833,9434847,9435186,9435741/upn/UNF1TiBtavY/sver/3/mt/1462544320/ip/64.125.177.124/ipbits/0/expire/1462565936/sparams/ip,ipbits,expire,id,itag,source,requiressl,ratebypass,live,cmbypass,goi,sgoap,sgovp,hls_chunk_host,gcr,playlist_type,mm,mn,ms,mv,pl/signature/67EC57CB964D9D944DE2E1AB40F0E496DA2C73B4.8FBEF1974DF9DB1E614B9C96BA0FF8E52076B04F/key/dg_yt0/playlist/index.m3u8
maintenant que vous avez la liste de lecture HLS, vous pouvez ouvrir cette URL dans VLC et la sauvegarder en utilisant "Record", ou écrire un petit ffmpeg commande:
ffmpeg -i \
https://manifest.googlevideo.com/api/manifest/hls_playlist/id/6aXR-SL5L2o.1/itag/95/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/cmbypass/yes/goi/160/sgoap/itag%3D140/sgovp/itag%3D136/hls_chunk_host/r16---sn-ab5l6ne7.googlevideo.com/gcr/us/playlist_type/DVR/mm/32/mn/sn-ab5l6ne7/ms/lv/mv/u/pl/17/dover/3/fexp/9416126,9416891,9419451,9422596,9423554,9427790,9428193,9428398,9428974,9429011,9431012,9431164,9432683,9433096,9433946,9434343,9434833,9434847,9435186,9435741/upn/UNF1TiBtavY/sver/3/mt/1462544320/ip/64.125.177.124/ipbits/0/expire/1462565936/sparams/ip,ipbits,expire,id,itag,source,requiressl,ratebypass,live,cmbypass,goi,sgoap,sgovp,hls_chunk_host,gcr,playlist_type,mm,mn,ms,mv,pl/signature/67EC57CB964D9D944DE2E1AB40F0E496DA2C73B4.8FBEF1974DF9DB1E614B9C96BA0FF8E52076B04F/key/dg_yt0/playlist/index.m3u8 \
-c copy output.ts
il n'y a pas besoin de passer quoi que ce soit à ffmpeg vous pouvez simplement saisir le format désiré, dans cet exemple, c'était le format "95".
Donc, une fois que vous savez que c'est le 95, vous tapez juste:
youtube-dl -f 95 https://www.youtube.com/watch\?v\=6aXR-SL5L2o
c'est-à-dire
youtube-dl -f <format number> <url>
il va commencer à générer sur le répertoire de travail A..partie qui est le fichier partiellement téléchargé, laissez-le aller et appuyez juste pour arrêter la capture.
Le fichier sera toujours nommé .partie, renommer en .mp4 et là il être...
ffmpeg -i $(youtube-dl -f <format number> -g <url>) -copy <file_name>.ts
a également fonctionné pour moi, mais le son et la vidéo sont sortis de la synchronisation, en utilisant juste youtube-dl a semblé produire un meilleur résultat bien qu'il utilise trop ffmpeg.
l'inconvénient de cette approche est que vous ne pouvez pas regarder la vidéo pendant le téléchargement, bien vous pouvez ouvrir encore un autre FF ou Chrome, mais il semble que mplayer ne peut pas traiter la sortie de vidéo jusqu'à ce que youtube-dl/ffmpeg sont en cours d'exécution.