原創:解決 python中moviepy調用ffmpeg的錯誤:subprocess, PermissionError: [WinError 5] 拒絕訪問

近期運行一個python程序用到了moviepy.editor.VideoFileClip()
moviepy基於ffmpeg,可是並非pip安裝的ffmepg,
執行html

import imageio
from moviepy.editor import VideoFileClip
clip = VideoFileClip("a.mp4")

時報錯,檢查各項依賴都沒問題,pip安裝了全部的依賴包,仍是一直報錯以下,在stackoverflow上找到一個相似的問題,PermissionError: [WinError 5] Access is denied python using moviepy to write gif, 仔細看了修復辦法,主要仍是改成管理員權限嘗試和安裝ImageMagicK, 嘗試以後也無論用,不過moviepy上確實也寫了不依賴ImageMagicK.python

Traceback (most recent call last):
  File "testmodule.py", line 13, in <module>
clip = VideoFileClip("a.mp4")
  File "……AppData\Local\Programs\Python\Python36\lib\site-packages\moviepy\video\io\VideoFileClip.py", line 91, in __init__
fps_source=fps_source)
  File "……\AppData\Local\Programs\Python\Python36\lib\site-packages\moviepy\video\io\ffmpeg_reader.py", line 33, in __init__
fps_source)
  File "……\AppData\Local\Programs\Python\Python36\lib\site-packages\moviepy\video\io\ffmpeg_reader.py", line 256, in ffmpeg_parse_infos
proc = sp.Popen(cmd, **popen_params)
  File "……\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 709, in __init__
restore_signals, start_new_session)
  File "……\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 997, in _execute_child
startupinfo)
PermissionError: [WinError 5] 拒絕訪問。

在以後仔細看了imageio的api設計,意識到ffmpeg用的是imageio包裝的,和pip安裝的ffmepg不一樣,使用VideoFileClip以前,有一個指令是ffmpegimageio.plugins.ffmpeg.download(),隨時下載了一個包,經過設置參數ffmpegimageio.plugins.ffmpeg.download(None, True)強制從新下載,看到了文件從https://github.com/imageio/imageio-binaries/raw/master/ffmpeg/ffmpeg-win32-v3.2.4.exe下載到本地,
AppData\Local\imageio\ffmpeg\ffmpeg-win32-v3.2.4.exe,有些詫異的是imageio選擇下載的是32位文件,而個人pc是64位的,從github列表看到確實沒有64位版本,

並且雙擊執行ffmpeg-win32-v3.2.4.exe報錯確實是沒有權限,實際上是32位程序不能在64位機器上運行
git

搞清楚了原理,直接去ffmepg官網下載64位便可,連接是https://ffmpeg.org/download.html#build-windows,根據本身的機器平臺,我則是下載ffmpeg-20180908-4cfb01d-win64-static.zip, 解壓後將其中的ffmpeg.exe替換原來的AppData\Local\imageio\ffmpeg\ffmpeg-win32-v3.2.4.exe, 再次運行clip = VideoFileClip("a.mp4"),成功執行!github

相關文章
相關標籤/搜索