2016-05-05 41 views
17

Basta chiedersi se è possibile o non- quando copio l'URL del video YouTube-DL sputa fuoriCome usi youtube-dl per scaricare live streaming (che sono in diretta)?

[https @ 0x7fc351416080] inflate return value: -3, incorrect header check 
Last message repeated 15 times 

Dopo che sputa fuori paio di righe di testo rosso che non sembra voler copiare in modo corretto, così ho preso un frammento

Picture

qualcuno sa se questo è possibile?

risposta

31

sarò con questo evento dal vivo come un esempio:

https://www.youtube.com/watch?v=6aXR-SL5L2o

In primo luogo, elencare i formati per il video:

➜ 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) 

scegliere il formato che si desidera scaricare e recupera l'URL di HLS m3u8 del video dal manifest. Sarò con 95 mp4 720p HLS , h264, aac @256k per questo esempio:

➜ 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 

Ora che avete la playlist HLS, è possibile aprire questo URL in VLC e salvarlo utilizzando "Record", o di scrivere un piccolo comando di ffmpeg:

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 
+2

Se hai scelto il formato che ti piace, invece di copiare e incollare puoi usare '$()' (sostituzione comando bash): 'ffmpeg -i $ (youtube-dl -f 22 -g https: // www .youtube.com/watch \? v \ = 6aXR-SL5L2o) -c copia omg1.ts' – fbehrens

2

Non è necessario passare nulla a ffmpeg è sufficiente prendere il formato desiderato, in questo esempio era il formato "95".

Quindi una volta che sai che è il 95, si digita semplicemente:

youtube-dl -f 95 https://www.youtube.com/watch\?v\=6aXR-SL5L2o 

cioè

inizierà generare sulla directory di lavoro un ..part che è il file parzialmente scaricato, lascia andare e basta premere per interrompere la cattura.

Il file verrà comunque chiamato .part, rinominarlo in .mp4 e non v'è ...

Il

ffmpeg -i $(youtube-dl -f <format number> -g <url>) -copy <file_name>.ts 

lavorato anche per me, ma il suono e il video ottenuto fuori sincrono , usando solo youtube-dl sembrava dare un risultato migliore anche se utilizza troppo ffmpeg.

Lo svantaggio di questo approccio è che non è possibile guardare il video durante il download, ma è possibile aprire un altro FF o Chrome, ma sembra che mplayer non possa elaborare l'output video fino a quando youtube-dl/ffmpeg non è in esecuzione.