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

Converting mp4 files without frames into mp3 using python / moviepy

所以我想做的是将我从使用 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()

避免使用.get_audio_only() 尝试使用 .get_by_itag 或类似的方式下载整个视频。 得到整个视频后为我工作。

所以只需将 VideoFileClip(filename) 更改为 AudioFileClip(filename) 就是解决方案:

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