问题
I'm trying to write a Python program that uses MoviePy on Mac OS 10.11.16 to convert an MP4 file to GIF. I use:
import moviepy.editor as mp
and I get an error saying I need to call imageio.plugins.ffmpeg.download() so I can download ffmpeg. I use:
import imageio
imageio.plugins.ffmpeg.download()
which gives me the following error:
Imageio: 'ffmpeg.osx' was not found on your computer; downloading it now.
Error while fetching file: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>.
Error while fetching file: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>.
Error while fetching file: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>.
Error while fetching file: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>.
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    imageio.plugins.ffmpeg.download()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imageio/plugins/ffmpeg.py", line 55, in download
    get_remote_file('ffmpeg/' + FNAME_PER_PLATFORM[plat])
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imageio/core/fetching.py", line 121, in get_remote_file
    _fetch_file(url, filename)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imageio/core/fetching.py", line 177, in _fetch_file
    os.path.basename(file_name))
OSError: Unable to download 'ffmpeg.osx'. Perhaps there is a no internet connection? If there is, please report this problem.
I definitely have an internet connection. I found this link, and tried installing with Homebrew and Static builds, but neither have worked. It seems like compiling it myself would be a little too advanced for me (I've only briefly looked into it). I used imageio.plugins.ffmpeg.download() on IDLE. I read something about using PyCharm to run the MoviePy code, but I get the same initial error. ffmpeg is currently in my /usr/local/bin folder. Any suggestions are welcome. Thank for your help.
Edit: I'm using Python 3.6.1
回答1:
I was able to find a workaround for macOS by debugging the fetching script:
- manually download the built (this is where the SSL error occurs): https://github.com/imageio/imageio-binaries/raw/master/ffmpeg/ffmpeg-osx-v3.2.4 
- paste the file to the path: - /Users/yourusername/Library/Application\ Support/imageio/ffmpeg/
- re-run your code 
what didn't solve my problem:
- upgrading moviepy with pip, then prompting the ffmpeg download through importing movie.editor
- explicitly importing imageio and executing imageio.plugins.ffmpeg.download()
- brew install ffmpeg
回答2:
I was able to solve this question using a solution similar to Bill Bell's. First, make sure that ffmpeg is actually installed on your system by running brew install ffmpeg. Then, running which ffmpeg should return something like /usr/local/bin/ffmpeg. 
As Bill suggests, add FFMPEG_BINARY = "/usr/local/bin/ffmpeg" before executing your python code or alternatively add:
import os    
os.environ["FFMPEG_BINARY"] = "/usr/local/bin/ffmpeg"
in your code. These worked on my machine.
回答3:
I warn you, I know nothing about Mac OS. But here's a possibility.
Look in config_defaults.py, in the moviepy folder, which is where (on Linux and Windows) one can set the locations for certain executables.
Add the line
FFMPEG_BINARY = "/usr/local/bin/ffmpeg.osx"
to the bottom of the file, where I assume that ffmpeg.osx is the name of your FFMPEG executable.
来源:https://stackoverflow.com/questions/45467234/ffmpeg-installation-on-macos-for-moviepy-fails-with-ssl-error