从链接列表中下载 1080p 的 YouTube 剪辑

问题描述

问题说明:从 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'、'开始片段'、'结束片段']

等列

如果能得到同样的帮助,将不胜感激。 如果我需要进一步澄清,请告诉我。 谢谢。

解决方法

我有一些不同的东西给你,但我认为它会帮助你! pip 安装 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')
,

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...