【问题标题】:Downloading a YouTube clip at 1080p from a list of links从链接列表中下载 1080p 的 YouTube 剪辑
【发布时间】: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


【解决方案1】:

我有一些不同的东西给你,但我认为它会对你有所帮助! 点安装 pytube

from pytube import YouTube
yt = YouTube("https://www.youtube.com/watch?v=n06H7OcPd-g")
yt = yt.get('mp4', '720p')
yt.download('/path/to/download/directory')

【讨论】:

  • 谢谢您,但能否请您再次检查该问题,如果我需要进一步澄清,请告诉我?
【解决方案2】:

这是我使用 youtube-dl 的版本,不确定它是否适用于您的上下文,并且它是在不使用批处理脚本的情况下完成的。

def get_youtube_video(url):
    ydl_opts = {'cachedir': False}

    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        ydl.download([url])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 2016-10-04
    • 2018-08-09
    • 2011-09-06
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多