私はtempフォルダにあるmp4ビデオを見つけ、musicという別のフォルダにあるmp3に変換し、tempフォルダからmp4を削除する機能を持っています。それは、このような次のようになります。ffmpegの終了後の処理方法
import imageio
imageio.plugins.ffmpeg.download()
import moviepy.editor as mp
def convert_mp4_to_mp3():
video_file = os.listdir(os.getcwd() + '//temp')[0]
audio_file = video_file.replace('mp4','mp3')
clip = mp.VideoFileClip(os.getcwd() + '//temp//' + video_file)
clip.audio.write_audiofile(os.getcwd() + '//music//' + audio_file)
os.system("taskkill /f /im ffmpeg.win32.exe*32")
os.remove(os.getcwd() + '//temp//' + video_file)
は、関数が正常にmp3へのMP4の変換を完了したが、私がしようとすると、ファイルを削除すると、私は次のエラーを取得:手動で削除しようとしたら
PermissionError: [WinError 32] The process cannot access the file because it
is being used by another process
を私はそれが "ffmpeg.win32.exe"がまだ開いているファイルで実行されていることを発見した。私はそのプロセスを抹殺するまで手動で削除することができませんでした。
私は、プロセスを殺すために、引数は(os.system(「taskkill/F/IM ffmpeg.win32.exe * 32」)最後の行に2番目を実装しようとしたが、私はまだ同じエラーを思い付く。
だから私の質問は、ffmpegを殺す簡単な方法は、私はそれをやったと知っているか、または別のプロセスを介して何とかそれを殺すための回避策ですか?私はWindows 7のPC上でpython3.6で働いています。
ffmpegを終了する代わりに 'clip.close()'を呼び出すようにしてください。 –
エラー "'VideoFileClip'オブジェクトに 'close'属性がありません" –
これは二重スラッシュ( '//')付きのコードの真のコピーですか? –