[英]Converting several video files into audio with MoviePy
我一直在尝试创建一个for 循环,其中 Python 遍历文件夹中的所有视频文件,并将每个单独的视频文件转换为新的音频文件。
我知道这样做的有效代码存在,但仅适用于单个文件。
这是我的代码:
import moviepy
import os
import moviepy.editor
import tempfile
pathdir = "path/to/dir"
for filename in os.listdir(pathdir):
filename.endswith(".mkv")
print(filename)
video = moviepy.editor.VideoFileClip(filename)
audio = video.audio
audio.write_audiofile(filename + ".wav")
else:
print("Finished conversion")
这就是出现的情况 - 请注意正确的文件名被打印出来,从而被识别。
runfile('path/to/dir/convert video to audio script.py', wdir='path/to/dir/')
fg_av_ger_seg0.mkv
Traceback (most recent call last):
OSError: MoviePy error: the file fg_av_ger_seg0.mkv could not be found!
Please check that you entered the correct path.
供您参考,这是它基于的代码,它可以正常工作,但仅适用于单个文件:
import moviepy.editor
video = moviepy.editor.VideoFileClip('sample.mp4')
audio = video.audio
audio.write_audiofile('audio.mp3')
谢谢您的帮助。 我是初学者,所以如果错误是基本的,我提前道歉! :)
好像是路径问题...
行filename.endswith(".mkv")
应该是if filename.endswith(".mkv"):
您还应该将路径与文件名连接起来:
filename = os.path.join(pathdir, filename) # Prints: path/to/dir/fg_av_ger_seg0.mkv
您可以使用glob.glob
预先过滤列表,而不是列出所有文件,并查找以.mkv
结尾的文件:
mkv_filenames_list = glob.glob(os.path.join(pathdir, "*.mkv"))
建议将.mkv
扩展名替换为.wav
扩展名(不仅仅是添加.wav
):
wav_file_name = filename.replace('.mkv', '.wav')
确保 MKV 文件位于正确的路径中,并且您对这些文件具有读取权限以及对文件夹的写入权限。
这是一个完整的代码示例(更改pathdir
,或将 Python 脚本放在与 MKV 文件相同的文件夹中):
import moviepy
import os
import glob
import moviepy.editor
pathdir = "."
# Get a list of all the files with .mkv extension in pathdir folder.
mkv_filenames_list = glob.glob(os.path.join(pathdir, "*.mkv"))
for filename in mkv_filenames_list:
print(filename)
video = moviepy.editor.VideoFileClip(filename)
audio = video.audio
# Some of my MKV files are without audio.
if audio is not None:
wav_file_name = filename.replace('.mkv', '.wav') # Replace .mkv with .wav
audio.write_audiofile(wav_file_name)
else:
print("Finished conversion")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.