如何在 Pytube 中合并音频和视频?
How to combine audio and video in Pytube?
我正在尝试编写代码以在 Python 3.6 上使用 Pytube 下载 YouTube 视频。但对于大多数视频,渐进式下载(同一文件中的音频和视频)格式只能达到 360p。所以想把音视频文件分开下载,然后合并。我能够下载音频和视频文件。如何将两个文件合并在一起?
基本上我在 Pytube
中找不到任何合并音频和视频的方法,但您可以使用 ffmpeg
进行混合。
首先你必须安装ffmpeg
ffmpeg
installation guide for Windows
for Ubuntu
just sudo apt install ffmpeg
添加依赖项 ffmpeg-python
ffmpeg
的 python 包装器
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 References
使用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”的文件中。
如何将下载的音频文件转换为mp3?
您需要在命令提示符中执行以下命令window:
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
如果您一直收到没有音频的视频,那是因为来自 pytube 的自适应流。解决方法是同时下载视频和音频...然后将它们与 ffpmeg 合并。
例如,像这样同时获取音频和视频(音频部分改编自here)
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 部分(改编自 here and ) you can set it up on Windows following this procedure 和 运行 类似
ffmpeg -i video.mp4 -i audio.mp4 -c:v copy -c:a aac output.mp4
我正在尝试编写代码以在 Python 3.6 上使用 Pytube 下载 YouTube 视频。但对于大多数视频,渐进式下载(同一文件中的音频和视频)格式只能达到 360p。所以想把音视频文件分开下载,然后合并。我能够下载音频和视频文件。如何将两个文件合并在一起?
基本上我在 Pytube
中找不到任何合并音频和视频的方法,但您可以使用 ffmpeg
进行混合。
首先你必须安装ffmpeg
ffmpeg
installation guide for Windowsfor
Ubuntu
justsudo apt install ffmpeg
添加依赖项 ffmpeg-python
ffmpeg
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 References
使用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”的文件中。
如何将下载的音频文件转换为mp3?
您需要在命令提示符中执行以下命令window:
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
如果您一直收到没有音频的视频,那是因为来自 pytube 的自适应流。解决方法是同时下载视频和音频...然后将它们与 ffpmeg 合并。
例如,像这样同时获取音频和视频(音频部分改编自here)
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 部分(改编自 here and
ffmpeg -i video.mp4 -i audio.mp4 -c:v copy -c:a aac output.mp4