原创:解决 python中moviepy调用ffmpeg的错误:subprocess, PermissionError: [WinError 5] 拒绝访问... - Go语言中文社区

原创:解决 python中moviepy调用ffmpeg的错误:subprocess, PermissionError: [WinError 5] 拒绝访问...


近期运行一个python程序用到了moviepy.editor.VideoFileClip()
moviepy基于ffmpeg,但是并不是pip安装的ffmepg,
执行

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.

Traceback (most recent call last):
  File "testmodule.py", line 13, in <module>
clip = VideoFileClip("a.mp4")
  File "……AppDataLocalProgramsPythonPython36libsite-packagesmoviepyvideoioVideoFileClip.py", line 91, in __init__
fps_source=fps_source)
  File "……AppDataLocalProgramsPythonPython36libsite-packagesmoviepyvideoioffmpeg_reader.py", line 33, in __init__
fps_source)
  File "……AppDataLocalProgramsPythonPython36libsite-packagesmoviepyvideoioffmpeg_reader.py", line 256, in ffmpeg_parse_infos
proc = sp.Popen(cmd, **popen_params)
  File "……AppDataLocalProgramsPythonPython36libsubprocess.py", line 709, in __init__
restore_signals, start_new_session)
  File "……AppDataLocalProgramsPythonPython36libsubprocess.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下载到本地,
AppDataLocalimageioffmpegffmpeg-win32-v3.2.4.exe,有些诧异的是imageio选择下载的是32位文件,而我的pc是64位的,从github列表看到确实没有64位版本,
1174358-20180909210338941-1400687398.png
而且双击执行ffmpeg-win32-v3.2.4.exe报错确实是没有权限,其实是32位程序不能在64位机器上运行
1174358-20180909210352410-199857280.png

搞清楚了原理,直接去ffmepg官网下载64位即可,链接是https://ffmpeg.org/download.html#build-windows,根据自己的机器平台,我则是下载ffmpeg-20180908-4cfb01d-win64-static.zip, 解压后将其中的ffmpeg.exe替换原来的AppDataLocalimageioffmpegffmpeg-win32-v3.2.4.exe, 再次运行clip = VideoFileClip("a.mp4"),成功执行!

转载于:https://www.cnblogs.com/Deep-Learning/p/9615103.html

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_30924239/article/details/95436890
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-04-19 10:38:35
  • 阅读 ( 1738 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢