Python爬取YouTube视频示例:pytube下载与ffmpeg融合

Ruby
Ruby
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍使用Python爬取YouTube视频的方法。通过pytube库获取1080p视频和音频流,利用ffmpeg命令进行音视频融合。文中提供了完整的Python代码示例及批处理脚本,帮助实现批量下载高清视频资源。

最近在重温剧集《大秦赋》(原名《大秦帝国之天下》)时,想回顾第一部《裂变》,但本地缺乏高清资源。搜索后发现YouTube上有48集的高清版本,尽管存在删减,仍决定编写脚本进行批量下载。由于YouTube对1080p及以上分辨率采用了音视频分离策略,下载后需借助ffmpeg进行音视频融合。本过程参考了pytube模块的实现方式。

1. 下载音视频数据

首先需要通过pip安装pytube库。


$pip install pytube

from pytube import YouTube
url = 'https://www.youtube.com/watch?v=K5KG4FVaD5M&list=PLtt_YYUGi1gVlXrNAOQX5BsIXAeTdTrwj&index={}'.format(i)
result = YouTube(url)
print(url + ' ' + result.title)
result.streams.get_by_itag(137).download('D:/xdedzl/movie/video')
print('done {} video'.format(i))
result.streams.get_by_itag(251).download('D:/xdedzl/movie/audio')
print('done {} audio'.format(i))

result.steams属性包含一系列不同质量的音视频数据,打印结果如图所示。可通过get_by_itag方法获取对应流,其中itag 137对应1080p视频,itag 251对应160k音频。

2. 融合音视频数据

使用ffmpeg命令进行音视频融合,具体命令如下,详细用法可自行查阅相关文档。


ffmpeg -i video_path -i audio_path -c:v copy -c:a aac -strict -2 output_path

编写了一个批处理脚本来完成48集视频的音视频融合工作。


echo off

set v=D:\xdedzl\movie\video\
set a=D:\xdedzl\movie\audio\
set o=D:\xdedzl\movie\
set /a i=1, b=49
:SymLoop

if %i% LSS %b% (
  echo %v%%i%.mp4
  echo %a%%i%.webm
  echo %o%%i%.mp4
  ffmpeg -i %v%%i%.mp4 -i %a%%i%.webm -c:v copy -c:a aac -strict -2 %o%%i%.mp4
  set /a "i+=1"
  GOTO :SymLoop 
)
pause

至此,关于Python爬取YouTube视频的示例介绍完毕。如需了解更多相关内容,请搜索本站过往文章或继续浏览后续文章,感谢支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表