3

我正在尝试编写代码以在 Python 3.6 上使用 Pytube 下载 YouTube 视频。但对于大多数视频,渐进式下载(同一文件中的音频和视频)格式仅支持 360p。所以我想分别下载音频和视频文件并合并。我能够下载音频和视频文件。如何将两个文件组合在一起?

4

4 回答 4

4

基本上我没有找到任何方法来处理音频和视频,Pytube但你可以使用ffmpeg多路复用。

首先你要安装ffmpeg

  1. ffmpegWindows安装指南

  2. Ubuntu只是为了sudo apt install ffmpeg

添加一个依赖ffmpeg-pythonpython 包装器的依赖项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()

更多信息,ffmpeg-python API 参考

于 2019-11-07T08:45:55.900 回答
2

如果您不断收到没有音频的视频,那是因为 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()

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

ffmpeg -i video.mp4 -i audio.mp4 -c:v copy -c:a aac output.mp4
于 2021-05-18T23:43:10.063 回答
0

使用ffmpeg合并音频和视频

一旦您下载了视频和音频文件(分别为“videoplayback.mp4”和“videoplayback.m4a”),您可以将它们合并为一个文件:

在 MP4 格式的情况下(所有,除了 1440p 60fps 和 2160p 60fps):

ffmpeg -i videoplayback.mp4 -i videoplayback.m4a -c:v copy -c:a copy output.mp4

对于 WebM 格式(1440p 60fps 和 2160p 60fps):

ffmpeg -i videoplayback.webm -i videoplayback.m4a -c:v copy -c:a copy output.mkv

等到 ffmpeg 完成将音频和视频合并到一个名为“output.mp4”的文件中。

于 2021-04-12T21:30:29.830 回答
0

如何将下载的音频文件转换为 mp3?

您需要在命令提示符窗口中执行以下命令:

ffmpeg -i INPUT_FILE -ab BITRATE -vn OUTPUT_FILE

例子:

ffmpeg -i videoplayback.m4a -ab 128000 -vn music.mp3

示例:2(无比特率)

ffmpeg -i videoplayback.m4a -vn music.mp3
于 2021-04-12T21:33:51.793 回答