You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pytube库下载YouTube视频播放无声音问题求助

问题根因
  • 代码中yt.streams.filter(progressive=True)这行没有接收返回值,过滤逻辑完全没有生效
  • 你手动选择的itag 399是DASH格式的纯视频流,本身就没有封装音轨,下载后播放自然没有声音

YouTube的媒体流分为两类:

  • 渐进式流(progressive):音视频封装在同一个文件里,最高分辨率为720P,下载后可以直接正常播放
  • DASH自适应流:视频轨、音轨分开存储,1080P及以上分辨率的内容全部采用这种格式,单独下载任意一个轨道都无法得到带声音的完整视频,必须分别下载后合并。
解决方法

方案1:直接下载音视频合并的渐进式流(无需额外工具,最高支持720P)

直接修改下载函数,从过滤后的渐进式流中选择最高分辨率的资源下载即可,替换后的download函数代码:

def download():
    # 过滤音视频合并的流,按分辨率降序选第一个
    stream = yt.streams.filter(progressive=True).order_by('resolution').desc().first()
    print("\nProcessing Your Request, Please Wait...\n")
    stream.download(output_path="C:\\Users\\samsk\\Downloads\\Youtube\\")
    print("\nDownload Complete :) \n")

如果需要指定分辨率,也可以在filter中增加参数,比如filter(progressive=True, res="720p")即可固定下载720P的带声视频。

方案2:高分辨率视频下载+音轨合并(支持1080P及以上画质)

如果需要1080P及更高清的视频,需要分别下载对应画质的视频轨、最高码率的音轨,再通过ffmpeg合并,操作步骤如下:

  1. 安装python依赖:执行pip install ffmpeg-python,同时在本地安装ffmpeg并配置到系统环境变量
  2. 将download函数替换为如下逻辑:
import ffmpeg
import os

def download():
    save_path = "C:\\Users\\samsk\\Downloads\\Youtube\\"
    print("\nProcessing Your Request, Please Wait...\n")
    
    # 下载itag=399的1080P纯视频轨
    video_stream = yt.streams.get_by_itag(399)
    temp_video = video_stream.download(output_path=save_path, filename="temp_video.mp4")
    
    # 下载最高码率的音轨
    audio_stream = yt.streams.filter(only_audio=True).order_by('abr').desc().first()
    temp_audio = audio_stream.download(output_path=save_path, filename="temp_audio.mp4")
    
    # 无损合并音视频
    video_input = ffmpeg.input(temp_video)
    audio_input = ffmpeg.input(temp_audio)
    output_file = os.path.join(save_path, f"{yt.title}.mp4")
    ffmpeg.output(video_input, audio_input, output_file, vcodec="copy", acodec="copy").run(overwrite_output=True)
    
    # 清理临时文件
    os.remove(temp_video)
    os.remove(temp_audio)
    print("\nDownload Complete :) \n")

内容的提问来源于stack exchange,提问作者skywalkerSam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:06:20