【发布时间】:2021-04-27 19:04:45
【问题描述】:
问题说明:从 YouTube 链接列表中下载 1080p 的 YouTube 视频片段
所以我尝试了PyTube 库,但它似乎不支持下载视频的某个片段。
有一个question 大致相同,答案支持视频中的后处理以将其剪辑出来,但我只想下载该特定剪辑而不是整个视频。虽然我正在寻找一个支持从一组链接下载多个视频的选项。
下面是我使用的代码。
import time
import pytube
import os
from pytube import YouTube
YouTubeIDs = ['QC8iQqtG0hg']
StartSeg = [2]
EndSeg = [3]
for i in range(len(YouTubeIDs)):
print(f'Downloading Video {i} with ID {YouTubeIDs[i]}')
ID = YouTubeIDs[i]
StartSegment = StartSeg[i]
EndSegment = EndSeg[i]
YTLink = f'https://www.youtube.com/embed/{ID}?start={StartSegment}&end={EndSegment}'
print(f'Link to the YouTube Video - {YTLink}')
time.sleep(2)
yt = YouTube(YTLink)
yt.streams.filter(res="720p").first().download()
os.rename(yt.streams.filter(res="720p").first().download(), f'YouTube_{i}.mp4')
print(f'Finished Downloading Video {i}, renamed as YouTube_{i}.mp4')
使用youtube-dl 尝试了另一种方法,但它不起作用,因为下载的视频为 0 KB。即使在 os 导入之后,我也尝试在 python 环境中,但它给出了相同的错误,我非常喜欢 Python 实现,除非非常必要,否则不要使用 bash 脚本。
%%bash
ffmpeg $(youtube-dl -g 'https://www.youtube.com/watch?v=NnW5EjwtE2U' | sed "s/.*/-ss 10 -i &/") -t 60 -c copy test3.mp4
旁注:这个想法是能够从大约 260 万个链接的 CSV 文件中下载 YouTube 视频的特定片段(大约 5-6 秒)。 CSV 文件包含 ['YouTube ID', 'start segment', 'end segment']
等列
如果能获得同样的帮助,我们将不胜感激。 如果我需要进一步澄清,请告诉我。 谢谢。
【问题讨论】:
-
你能详细说明“它没有用”吗?
-
但是这段代码对我有用。我可以下载所有视频。
-
@JuanCamiloRiveraPalacio 我说它不起作用的意思是它不会下载视频的分段剪辑。
-
@ScottHunter 是的,代码可以工作,但我希望它可以在 python 环境中工作,因为它是一个 bash 脚本。为了尝试,我使用了
import os,但没有帮助。
标签: python download youtube youtube-dl pytube