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

Picture

Est-ce que quelqu'un sait si c'est possible?

24
demandé sur JAL 2016-05-05 04:25:50

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
41
répondu JAL 2016-05-06 14:24:18

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.

6
répondu Andrés Cancer 2017-04-22 17:05:30