我的目标是在单独的文件中下载带有自动生成字幕的 YouTube 视频,例如.vtt
、.srt
等。
我目前正在努力实现这一目标youtube-dl
但如果需要,我愿意接受其他解决方案。
当我运行以下命令时,它将视频下载为.mp4
(这很好)和一个单独的.vtt
文件,但.vtt
似乎不知何故搞砸了,并立即显示整个剪辑的所有文本,而不是指定的时间。
我正在运行的命令:
youtube-dl --write-auto-sub https://www.youtube.com/watch?v=Roc89oOZOF4&list=PLJBo3iyb1U0eNNN4Dij3N-d0rCJpMyAKQ&index=45
Run Code Online (Sandbox Code Playgroud)
下载此 .vtt:
WEBVTT
Kind: captions
Language: en
00:00:05.960 --> 00:00:08.290 align:start position:0%
thank <00:00:06.003><c>you </c><00:00:06.046><c>ah </c><00:00:06.089><c>crap </c><00:00:06.132><c>well </c><00:00:06.175><c>looks </c><00:00:06.218><c>like </c><00:00:06.261><c>the </c><00:00:06.304><c>good </c><00:00:06.347><c>Lord </c><00:00:06.390><c>just </c><00:00:06.433><c>sent </c><00:00:06.476><c>me </c><00:00:06.519><c>a </c><00:00:06.562><c>conversation </c><00:00:06.605><c>starter </c><00:00:06.648><c>come </c><00:00:06.691><c>here </c><00:00:06.734><c>Jesse </c><00:00:06.777><c>come </c><00:00:06.820><c>get </c><00:00:06.863><c>the </c><00:00:06.906><c>ball </c><00:00:06.949><c>hmm</c>
00:00:08.290 --> 00:00:10.549 align:start position:0%
thank you ah crap well looks like the good Lord just sent me a conversation starter come here …
Run Code Online (Sandbox Code Playgroud) 昨天这工作正常,今天我在我的本地计算机、colab 笔记本、甚至在我的 VPS 上遇到错误。
/usr/local/lib/python3.9/dist-packages/pytube/cipher.py in get_throttling_plan(js)
409 match = plan_regex.search(raw_code)
410
--> 411 transform_plan_raw = find_object_from_startpoint(raw_code, match.span()[1] - 1)
412
413 # Steps are either c[x](c[y]) or c[x](c[y],c[z])
Run Code Online (Sandbox Code Playgroud)
from pytube import YouTube def audio_download(video_url): audio_file = YouTube(video_url).streams.filter(only_audio=True).first().download(filename="audio.mp4") return 'ok'
预计下载音频。我什至尝试按照其他解决方案中所述更改 cipher.py 文件,但不起作用。
我正在研究视频模式,为此我需要从youtube下载视频.我发现youtube-dl项目对此非常有用,因为它是一个用Python编写的命令行工具(它与我的项目的其余部分很好地集成在基于ubuntu的python上).
尝试下载一些视频,我遇到了这个问题:
me@server:~/Desktop/YouTube/backend$ ./youtube-dl.py https://www.youtube.com/watch?v=8SbUC-UaAxE
[youtube] Setting language
[youtube] 8SbUC-UaAxE: Downloading video webpage
[youtube] 8SbUC-UaAxE: Downloading video info webpage
[youtube] 8SbUC-UaAxE: Extracting video information
[youtube] 8SbUC-UaAxE: Encrypted signatures detected.
ERROR: unable to download video
Run Code Online (Sandbox Code Playgroud)
1)这是因为该视频受版权保护吗?
2)有没有人有下载这类视频的经验?我看到Free Video Downloader和这个工具栏应用程序之类的工具似乎很好地解决了这个问题.我需要在python web框架,nodejs或类似的东西中完成类似的功能.
具体来说我想使用DownloadThemAll,我可以使用youtube-dl给我直接链接吗?
我正在尝试开发一个Python脚本来下载一堆youtube视频,这些视频是使用youtube-dl模块从csv文件输入的。由于单个视频下载失败,脚本停止。我需要脚本继续下载下一个视频,而忽略了无法下载的视频。有人可以帮我如何在python中处理这个问题吗?
我尝试更新youtube-dl上的最新版本,但我无法更新,当我尝试得到错误时
"看起来你安装了youtube-dl与包管理器,pip,setup.py或tarball.请使用更新."
我一直在尝试下载我拥有的URL(YouTube视频)列表的缩略图。
我一直在使用youtube-dl,到目前为止,我已经解决了这个问题:
import os
with open('results.txt') as f:
for line in f:
os.system("youtube-dl " + "--write-thumbnail " + line)
Run Code Online (Sandbox Code Playgroud)
像这样,我可以下载缩略图,但是我也不得不下载youtube视频。
如何下载缩略图?
我知道有数百个网站将youtube视频转换为mp3.他们中的大多数是通过首先下载视频,然后使用youtube-dl,ffmpeg或类似程序将其转换为服务器上的mp3(或任何其他音频格式)来实现的.
我想知道的是,有什么办法可以为任何YouTube视频提取音频链接吗?我不知道是否可能,但我看到有几个网站在做这件事.
第一个网站:Openaisearch.com 这个网站只是提供音频的下载链接(从YouTube视频获取).我搜索了一首歌并看到了下载网址,它看起来像这样:
https://redirector.googlevideo.com/videoplayback?source=youtube&requiressl=yes&clen=3814013&upn=dzwY9aUVYME&lmt=1469875393441562&expire=1484854959&mime=audio%2Fmp4&nh=IgpwcjAxLnNlYTA5Kg01Mi45NS4yMTYuMTAy&itag=140...........
Run Code Online (Sandbox Code Playgroud)
我相信这不是首先下载并将视频转换为音频格式(如果我错了,请纠正我).虽然使用此链接后下载的文件没有任何扩展名,但在下载文件末尾添加".m4a"可以正常工作.
第二个网站:http://keepvid.com/?url = https://www.youtube.com/watch?v = PT2_F-1esPk
再次类似的网站与类似的音频链接.您可以访问URL查看音频文件的链接.
知道这些网站如何获得"googlevideo.com"链接?他们会废弃youtube视频链接吗?
谢谢.
IINA是一个很好的球员.您甚至可以从YouTube播放视频(通过youtube-dl
)但是如何选择视频质量?
默认情况下youtube-dl
使用最佳质量.如果视频是4K - 你将获得4K.有时它对笔记本来说太过分了.
我创建了一个脚本来下载youtube视频并在每个期间从中提取图像
屏幕截图视频
def screenshotvideo(url, interval, id, fullduration, title, quality):
interval = int(interval)
parsed_t = isodate.parse_duration(fullduration)
durationseconds=parsed_t.total_seconds()
iterat=int(durationseconds/int(interval))
for i in range(0, iterat):
print(str(id))
print(str(i))
print(str(i*interval))
part(url, time.strftime('%H:%M:%S', time.gmtime(int(i*interval))), "00:00:01", title+"-"+str(id), quality)
Run Code Online (Sandbox Code Playgroud)
部分
def part(url, starttime, duration, name, quality):
f = os.popen("ffmpeg $(youtube-dl -f "+quality+" -g '"+url+"' | sed 's/.*/-ss "+starttime+" -i &/') -t "+duration+" -c copy "+name+".mp4")
now = f.read()
print(now)
f = os.popen("ffmpeg -i "+name+".mp4 -ss 00:00:00 -vframes 1 "+name+".jpg")
now = f.read()
print(now)
f = os.popen("rm -rf "+name+".mp4") …
Run Code Online (Sandbox Code Playgroud) youtube-dl ×10
python ×4
youtube ×4
ffmpeg ×3
audio ×1
homebrew ×1
macos ×1
python-2.7 ×1
pytube ×1
subtitle ×1