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