如何在 Pytube 中结合音频和视频?

Nik*_*lan 6 python youtube python-3.x audio-video-sync pytube

我正在尝试编写一段代码,在 Python 3.6 上使用 Pytube 下载 YouTube 视频。但对于大多数视频,渐进式下载(同一文件中的音频和视频)格式最多只能提供 360p。所以我想把音频和视频文件分开下载然后合并起来。我能够下载音频和视频文件。如何将两个文件合并在一起?

小智 9

基本上我找不到任何方法来合并音频和视频Pytube,但您可以用于ffmpeg混合。

首先你必须安装ffmpeg

  1. ffmpegWindows安装指南

  2. Ubuntu只是为了sudo apt install ffmpeg

ffmpeg-python添加一个 python 包装器的依赖项ffmpeg

  1. pip install ffmpeg-python

现在我们准备好使用这段代码了

import ffmpeg

video_stream = ffmpeg.input('Of Monsters and Men - Wild Roses.mp4')
audio_stream = ffmpeg.input('Of Monsters and Men - Wild Roses_audio.mp4')
ffmpeg.output(audio_stream, video_stream, 'out.mp4').run()
Run Code Online (Sandbox Code Playgroud)

有关更多信息,ffmpeg-python API 参考


Tia*_*ica 5

如果您不断收到没有音频的视频,那是因为 pytube 的自适应流。解决方法是下载视频和音频...然后将它们与 ffpmeg 合并。

例如,像这样获取音频和视频(音频部分改编自这里

from pytube import YouTube
import os

youtube = YouTube('https://youtu.be/ksu-zTG9HHg')
video = youtube.streams.filter(res="1080p").first().download()
os.rename(video,"video_1080.mp4")
audio = youtube.streams.filter(only_audio=True)
audio[0].download()
Run Code Online (Sandbox Code Playgroud)

然后是 ffmpeg 部分(改编自此处此处),您可以按照此过程在 Windows 上进行设置,然后运行类似的内容

ffmpeg -i video.mp4 -i audio.mp4 -c:v copy -c:a aac output.mp4
Run Code Online (Sandbox Code Playgroud)