使用python/moviepy将没有帧的mp4文件转换为mp3

问题描述 投票:0回答:3

所以我想做的是将使用 pytube 下载 YouTube 视频获得的 mp4 文件转换为使用 moviepy 的 mp3 文件。但是,这些 mp4 文件不包含任何在 ffmpeg_reader 中引发

KeyError: 'video_fps'
的帧。

是否可以使用 moviepy 来做到这一点,还是我需要使用不同的工具?我想我也可以只下载带有视频的 mp4 文件,但这会浪费资源,尤其是对于大型播放列表。


这是我使用的代码:

from moviepy.video.io.VideoFileClip import VideoFileClip
import pytube
    
def downloadPlaylist(url):
        playlist = pytube.Playlist(url)
    
        for video in playlist.videos:
            filename = video.streams.get_audio_only().download()
            clip = VideoFileClip(filename)
            clip.audio.write_audiofile(filename[:-4] + ".mp3")
            clip.close()
python mp3 mp4 moviepy pytube
3个回答
3
投票

所以只需将

VideoFileClip(filename)
更改为
AudioFileClip(filename)
就是解决方案:

    clip = AudioFileClip(filename)
    clip.write_audiofile(filename[:-4] + ".mp3")
    clip.close()

0
投票

避免使用

.get_audio_only()
尝试使用
.get_by_itag
或类似的东西下载整个视频。 获得整个视频后为我工作。


0
投票

您可以使用 ffmpeg-python 包,它是调用 ffmpeg 的包装器。例如(使用

pip install ffmpeg-python
安装后),执行:

import ffmpeg
import pytube
    
def downloadPlaylist(url):
    playlist = pytube.Playlist(url)

    for video in playlist.videos:
        filename = video.streams.get_audio_only().download()

        _ = (
            ffmpeg
            .input(filename)
            .output(filename[:-4] + ".mp3")
            .run()
        )
© www.soinside.com 2019 - 2024. All rights reserved.