只是想知道这是否可能 - 当我将视频网址复制到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;
之后它会发出几行似乎并不想正确复制的红色文字,所以我拿了一个片段
有人知道这是否可行?
答案 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)
这个问题是 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,它的作用就像一个魅力!方法如下:
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
home/USERNAME/Videos/OBS
)--> 可选择选中“生成无空格的文件名”框”(我这样做)--> 单击“确定”。答案 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
,所以我不必每次都键入它:)