通过pytube模块和FFmpeg实现自动爬取youtube上的视频和音频并自动拼接

一.安装pytube模块

登录此链接下载:https://pypi.org/project/pytube/#files

通过pytube模块和FFmpeg实现自动爬取youtube上的视频和音频并自动拼接

 

下载完成后放入Python解释器的script文件夹下,然后进入CMD执行pip install 模块名

通过pytube模块和FFmpeg实现自动爬取youtube上的视频和音频并自动拼接

 

 

二.安装ffmpeg

登录官网:http://ffmpeg.org/

通过pytube模块和FFmpeg实现自动爬取youtube上的视频和音频并自动拼接

 

 

 

选择需要的版本

 通过pytube模块和FFmpeg实现自动爬取youtube上的视频和音频并自动拼接

 

下载圈出来的这个版本

 

 

通过pytube模块和FFmpeg实现自动爬取youtube上的视频和音频并自动拼接

 

 

 

 

将解压后得到的以下几个文件放置在 E:\FFmpeg 下

通过pytube模块和FFmpeg实现自动爬取youtube上的视频和音频并自动拼接

 

 

 

环境变量

此电脑--属性--高级系统设置--环境变量

在系统变量(也就是下面那一半)处找到新建,按如下所示的方法填写

通过pytube模块和FFmpeg实现自动爬取youtube上的视频和音频并自动拼接

 

 

 

再将 %FFMPEG_HOME% 以及 %FFMPEG_HOME%\bin 写入系统变量的Path中

然后一路确定即可

验证

win+R,cmd

输入 ffmpeg

 通过pytube模块和FFmpeg实现自动爬取youtube上的视频和音频并自动拼接

 

 

 

三.ffmpeg在Python中的使用

重点重点!
重点重点!
重点重点!

重要的事情要说三遍,这边需要注意,不然很可能你会一直拼接失败却找不到原因。
# {video}是要拼接的视频路径,{audio}是要拼接的音频路径,这里我直接用格式化字符串来传值了。
# 由于该命令需要被传入cmd命令窗,所以路径务必加上双引号,以免程序识别不出来
# 某些特殊字符在CMD里是直接被移除的,例如‘/’,所以我们需要在格式化字符串的时候移除指定的那几个特殊字符。
f'ffmpeg -i "{video}" -i "{audio}" -c:v copy -c:a aac -strict -2 "{outer_path}"'.replace('/','')
import os
import time

from pytube import YouTube
from threading import Thread
import subprocess
link=input('请输入YouTube视频链接:').strip() 
yt_name=YouTube(link).title  # 获取视频的文件名
yt=YouTube(link).streams   # 获取视频流信息

def youtube_v(): yt.get_by_itag(137).download(r'D:\pytube\video') #获取资源号:1080p选137 1080p60fps 选299;然后下载到指定路径 print('视频下载成功')
def youtube_s(): yt.get_by_itag(251).download(r'D:\pytube\audio') # 获取资源号:音频251默认160kbps;然后下载到指定路径 print('音频下载成功') def video_add_mp4(video,audio,outer_path): order = f'ffmpeg -i "{video}" -i "{audio}" -c:v copy -c:a aac -strict -2 "{outer_path}"'.replace('/','') print(order) subprocess.Popen(order, shell=True) #调用系统命令执行指令 if __name__ == '__main__': t=Thread(target=youtube_v) #开启多线程下载 t2=Thread(target=youtube_s) t.start() t2.start() t.join() #等待子进程结束后再执行父进程 t2.join() a = fr'D:\pytube\video\{yt_name}.mp4' # 视频路径 b = fr'D:\pytube\audio\{yt_name}.webm' # 音频路径 c = fr'D:\pytube\outer\{yt_name}.mp4' # 视频+音频路径 video_add_mp4(a,b,c) #执行视频音频拼接指令

 

get_by_itag()括号内对应数字如下:

作者链接:https://blog.csdn.net/hezhefly/article/details/102531398


itag Code Container Content Resolution Bitrate Range VR / 3D 5 flv audio/video 240p - - - 6 flv audio/video 270p - - - 17 3gp audio/video 144p - - - 18 mp4 audio/video 360p - - - 22 mp4 audio/video 720p - - - 34 flv audio/video 360p - - - 35 flv audio/video 480p - - - 36 3gp audio/video 180p - - - 37 mp4 audio/video 1080p - - - 38 mp4 audio/video 3072p - - - 43 webm audio/video 360p - - - 44 webm audio/video 480p - - - 45 webm audio/video 720p - - - 46 webm audio/video 1080p - - - 82 mp4 audio/video 360p - - 3D 83 mp4 audio/video 480p - - 3D 84 mp4 audio/video 720p - - 3D 85 mp4 audio/video 1080p - - 3D 92 hls audio/video 240p - - 3D 93 hls audio/video 360p - - 3D 94 hls audio/video 480p - - 3D 95 hls audio/video 720p - - 3D 96 hls audio/video 1080p - - - 100 webm audio/video 360p - - 3D 101 webm audio/video 480p - - 3D 102 webm audio/video 720p - - 3D 132 hls audio/video 240p - - 133 mp4 video 240p - - 134 mp4 video 360p - - 135 mp4 video 480p - - 136 mp4 video 720p - - 137 mp4 video 1080p - - 138 mp4 video 2160p60 - - 139 m4a audio - 48k - 140 m4a audio - 128k - 141 m4a audio - 256k - 151 hls audio/video 72p - - 160 mp4 video 144p - - 167 webm video 360p - - 168 webm video 480p - - 169 webm video 1080p - - 171 webm audio - 128k - 218 webm video 480p - - 219 webm video 144p - - 242 webm video 240p - - 243 webm video 360p - - 244 webm video 480p - - 245 webm video 480p - - 246 webm video 480p - - 247 webm video 720p - - 248 webm video 1080p - - 249 webm audio - 50k - 250 webm audio - 70k - 251 webm audio - 160k - 264 mp4 video 1440p - - 266 mp4 video 2160p60 - - 271 webm video 1440p - - 272 webm video 4320p - - 278 webm video 144p - - 298 mp4 video 720p60 - - 299 mp4 video 1080p60 - - 302 webm video 720p60 - - 303 webm video 1080p60 - - 308 webm video 1440p60 - - 313 webm video 2160p - - 315 webm video 2160p60 - - 330 webm video 144p60 - hdr 331 webm video 240p60 - hdr 332 webm video 360p60 - hdr 333 webm video 480p60 - hdr 334 webm video 720p60 - hdr 335 webm video 1080p60 - hdr 336 webm video 1440p60 - hdr 337 webm video 2160p60 - hdr 394 mp4 video 144p - - 395 mp4 video 240p - - 396 mp4 video 360p - - 397 mp4 video 480p - - 398 mp4 video 720p - - 399 mp4 video 1080p - - 400 mp4 video 1440p - - 401 mp4 video 2160p - - 402 mp4 video 2880p - -
上一篇:ffmpeg播放器实现详解 - 快进快退控制


下一篇:[IOI2021]distribute candies