你如何使用youtube-dl下载直播(现场直播)?

时间:2016-05-05 01:25:51

标签: youtube youtube-dl youtube-livestreaming-api

只是想知道这是否可能 - 当我将视频网址复制到YouTube-dl时它会吐出来

SELECT a.*,
       STUFF((SELECT ', ' + sp.Description
              FROM dbo.ActivityServiceProvider asp INNER JOIN
                   dbo.ServiceProvider sp
                   ON sp.ID = asp.ServiceProviderID
              WHERE asp.ActivityID = a.ID
              FOR XML PATH(''), TYPE
             ).value('.', 'VARCHAR(MAX)'
                    ), 1, 2, ''
            ) AS NameValues
FROM activity a;

之后它会发出几行似乎并不想正确复制的红色文字,所以我拿了一个片段

Picture

有人知道这是否可行?

6 个答案:

答案 0 :(得分:45)

我将以此直播活动为例:

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

首先,列出视频的格式:

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

选择您要下载的格式,然后从清单中获取视频的HLS m3u8网址。我将在此示例中使用95 mp4 720p HLS , h264, aac @256k

➜  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

现在您已拥有HLS播放列表,您可以在VLC中打开此URL并使用"记录"保存它,或者编写一个小的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

答案 1 :(得分:11)

无需向ffmpeg传递任何内容,您只需获取所需的格式,在此示例中,它是" 95" 格式。

所以一旦你知道它是 95 ,你只需输入:

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

也就是说:

youtube-dl -f <format number> <url>

它将开始在工作目录中生成 <somename>.<probably mp4>.part ,这是部分下载的文件,让它继续,只需按<Ctrl-C>即可停止捕获。

该文件仍将命名为 <something>.part ,将其重命名为 <whatever>.mp4 ,然后就是......

ffmpeg代码:

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

也适用于我,但声音和视频不同步,仅使用youtube-dl似乎会产生更好的结果,尽管它也使用ffmpeg

这种方法的缺点是您无法在下载时观看视频,您可以打开另一个FF或Chrome,但似乎mplayer无法处理视频输出,直到youtube-dl / { {1}}正在运行。

答案 2 :(得分:3)

之前,可以使用流链接下载该文件,但YouTube更改了DASH的HLS倒带功能。 因此,下面的操作方法(Prashant Adlinge评论)不再适用于YouTube:

streamlink --hls-live-restart STREAMURL best

更多信息here

答案 3 :(得分:1)

我已经编写了一个小脚本来下载YouTube直播视频,您也可以将其用作单个命令。 脚本,可以简单地将其调用,

~/ytdl_lv.sh <URL> <output file name>

例如

~/ytdl_lv.sh https://www.youtube.com/watch?v=BLIGxsYLyjc myfile.mp4

脚本很简单,如下所示

#!/bin/bash 

# ytdl_lv.sh
# Author Prashant
# 

URL=$1 
OUTNAME=$2
streamlink --hls-live-restart -o ${OUTNAME} ${URL} best

最好的是流质量,也可以是144p(最差),240p,360p,480p,720p(最好)

答案 4 :(得分:1)

如何下载 YouTube(或任何其他流媒体服务、期间)直播(通过屏幕截图)

这个问题是 Google search for "linux download youtube live stream" 的第一个热门问题,所以即使 youtube-dl 对我来说失败了,我也会在这里回答。

我真的不在乎我使用什么工具。我只是想让它工作。

youtube-dl 对我来说失败了

我尝试了 #1 answer,但它失败了。示例直播链接:https://www.youtube.com/watch?v=VUhQ6zEky0o。我的尝试和失败信息:

$ youtube-dl --list-formats https://www.youtube.com/watch?v=VUhQ6zEky0o
[youtube] VUhQ6zEky0o: Downloading webpage
[youtube] VUhQ6zEky0o: Downloading video info webpage
ERROR: VUhQ6zEky0o: YouTube said: Invalid parameters.

再说一次,这是上面的错误:

<块引用>

错误:VUhQ6zEky0o:YouTube 说:参数无效。

我在 youtube-dl 直播时尝试了多个直播链接。这对他们中的任何一个都不起作用。我收到了上面的错误消息。

OBS Studio 效果很好

(这里是 OBS Studio 的一般安装和设置说明,包括配置视频和音频源以及进行屏幕录制和音频捕获)

所以,我使用了 OBS Studio,它的作用就像一个魅力!方法如下:

  1. 安装它。它是跨平台的(Windows、Mac 和 Linux),并且质量很高并且得到很好的支持,带有优秀的安装说明。转到此处获取安装链接:https://obsproject.com/
    1. 它也是免费和开源的,免费(不是一回事),两者都很棒。
    2. 源代码:https://github.com/obsproject/obs-studio
    3. 许可证是 GPL v2.0:https://github.com/obsproject/obs-studio/blob/master/COPYING
    4. 我使用的是 Linux Ubuntu 18.04 和 20.04,因此我使用了此处的 Ubuntu 说明:https://obsproject.com/wiki/install-instructions#linux。在撰写本文时,他们是:
      sudo apt install ffmpeg
      sudo apt install v4l2loopback-dkms
      sudo add-apt-repository ppa:obsproject/obs-studio
      sudo apt update
      sudo apt install obs-studio
      
  2. 接下来,我遵循了 Kezz Bracey 于 2020 年 7 月 25 日的这些说明:https://photography.tutsplus.com/tutorials/obs-for-screen-recording-quick-start--cms-28549。让我总结一下,再加上我自己的一些步骤,如下:
  3. 打开它。第一次打开它时,它会询问您是要针对流式传输 进行优化还是针对录制 进行优化。大多数人会选择仅用于录音的选项。如果您也向观众直播,请改为选择该选项。
  4. 现在,在 OBS 主窗口底部的“来源”下,您会看到它是空的。单击 + 图标以添加新的视频源。选择“屏幕捕获 (XSHM)”,如下所示(这些图片借自上面 Kezz Bracey 的说明):
    enter image description here
    点击“确定”:
    enter image description here
    再次点击“确定”:
    enter image description here
  5. 点击右下角的“设置”:
    enter image description here
    单击左侧窗格中的“输出”--> 设置或记下您的“录制路径”(我喜欢将我的设置为 home/USERNAME/Videos/OBS)--> 可选择选中“生成无空格的文件名”框”(我这样做)--> 单击“确定”。
    enter image description here
  6. 返回主屏幕,在底部的“混音器”部分下,您应该会看到“桌面音频”(从计算机内部播放的任何音频)和“麦克风/辅助”(任何环境音频)被计算机的麦克风或 Aux 插孔拾取。通常,为了制作视频教程和其他东西,您需要将这两个音频源都打开,这样您就可以在视频中进行交谈并解释您正在做的事情,并且它会清楚地记录来自计算机也通过“桌面音频”源。
    1. 如果您在说话时通过耳机聆听从计算机中传出的宁静禅宗音乐,那么您需要关闭“桌面音频”,这样只有您听到它,而不是录音,或者,在如果您正在录制 YouTube 或其他直播,您需要关闭“麦克风/辅助”,这样您就不会在录制过程中添加环境噪音——您只会获得视频音频。
    2. 因此,单击扬声器图标可关闭麦克风/辅助音频输入,如下所示。它现在将显示一个带有 X 的红色图标,表示它已关闭:
      enter image description here
  7. 单击此底部窗格右侧的“开始录制”按钮。现在,打开您的 YouTube 直播,使其全屏显示,瞧!您正在通过视频的屏幕截图和音频的“桌面音频”捕获进行现场录制。
  8. 完成后,单击“停止录制”按钮(用于“开始录制”的位置),或单击计算机右上角的 OBS 工作室图标(至少对于 Ubuntu),然后选择“停止录制” ":
    enter image description here
  9. 导航到您在上面设置的“录制路径”,瞧!有你的录像!

答案 5 :(得分:0)

您也可以输入以下内容:

URL=https://www.youtube.com/watch?v=6aXR-SL5L2o
youtube-dl -f 95 --hls-prefer-native $URL

对于某些其他无法播放m3u流内容的网站,您可以尝试如下操作:

$ youtube-dl -F https://www.arte.tv/fr/videos/078132-001-A/cosmos-une-odyssee-a-travers-l-univers/ | grep m3u
HLS_XQ_2     m3u8       1280x720   VA-STA, Allemand 2200k 
HLS_XQ_1     m3u8       1280x720   VF-STF, Français 2200k 
$ youtube-dl -gf HLS_XQ_1 --get-filename https://www.arte.tv/fr/videos/078132-001-A/cosmos-une-odyssee-a-travers-l-univers/
https://arteptweb-vh.akamaihd.net/i/am/ptweb/078000/078100/078132-001-A_0_VF-STF_AMM-PTWEB_XQ.1AhsDgVG20.smil/master.m3u8
Cosmos_une_odyssee_a_travers_l_univers__HLS_XQ_1__078132-001-A.m3u8
$ youtube-dl -F https://arteptweb-vh.akamaihd.net/i/am/ptweb/078000/078100/078132-001-A_0_VF-STF_AMM-PTWEB_XQ.1AhsDgVG20.smil/master.m3u8
[generic] master: Requesting header
[generic] master: Downloading webpage
[generic] master: Downloading m3u8 information
[info] Available formats for master:
format code  extension  resolution note
61           mp4        audio only   61k , mp4a.40.2
419          mp4        384x216     419k , avc1.66.30, mp4a.40.2
923          mp4        640x360     923k , avc1.77.30, mp4a.40.2
1737         mp4        720x406    1737k , avc1.77.30, mp4a.40.2
2521         mp4        1280x720   2521k , avc1.77.30, mp4a.40.2 (best)
$ youtube-dl --hls-prefer-native -f 1737 https://arteptweb-vh.akamaihd.net/i/am/ptweb/078000/078100/078132-001-A_0_VF-STF_AMM-PTWEB_XQ.1AhsDgVG20.smil/master.m3u8 -o Cosmos_une_odyssee_a_travers_l_univers__HLS_XQ_1__078132-001-A.mp4
[generic] master: Requesting header
[generic] master: Downloading webpage
[generic] master: Downloading m3u8 information
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 257
[download] Destination: Cosmos_une_odyssee_a_travers_l_univers__HLS_XQ_1__078132-001-A.mp4
[download]   0.9% of ~731.27MiB at 624.95KiB/s ETA 13:13
....

顺便说一句:我已经在--hls-prefer-native中添加了~/.config/youtube-dl.conf,所以我不必每次都键入它:)