1

我正在尝试在 Raspian 上将 MoviePy 与 Python 3.2.3 一起使用。我已经安装了它(对于 Python 2.7、3.2 和 3.5 ......长篇大论)和行

from moviepy.editor import *

工作正常。当我尝试

clip = VideoFileClip("vid.mov")

这是最基本的命令,它给出了错误

Traceback (most recent call last):
File "/home/pi/QuickFlicsPics/moviepytest.py", line 8, in <module>
  clip = VideoFileClip("vid.mov")
File "/usr/local/lib/python3.2/distpackages/moviepy/video/io/VideoFileClip.py", line 55, in __init__
  reader = FFMPEG_VideoReader(filename, pix_fmt=pix_fmt)
File "/usr/local/lib/python3.2/dist-packages/moviepy/video/io/ffmpeg_reader.py", line 32, in __init__
   infos = ffmpeg_parse_infos(filename, print_infos, check_duration)
File "/usr/local/lib/python3.2/dist-packages/moviepy/video/io/ffmpeg_reader.py", line 237, in ffmpeg_parse_infos
  proc = sp.Popen(cmd, **popen_params)
File "/usr/lib/python3.2/subprocess.py", line 745, in __init__
  restore_signals, start_new_session)
File "/usr/lib/python3.2/subprocess.py", line 1371, in _execute_child
  raise child_exception_type(errno_num, err_msg)

OSError: [Errno 8] Exec format error

我已经研究过这个错误,它似乎与某处丢失的 shebang 线有关。这是否正确,如果是,我该如何查找它丢失的位置,以及我要添加什么?谢谢

编辑:根据cxw的评论,我使用命令安装了moviepy

pip-3.2 install moviepy

(我可能也使用过'sudo')

当我第一次使用moviepy时,FFMPEG应该自动下载:

MoviePy 依赖于软件 FFMPEG 进行视频读写。> 您无需担心,因为 FFMPEG 应该会在您第一次使用 MoviePy 时由 ImageIO 自动下载/安装(需要几秒钟)。如果您想使用特定版本的 FFMPEG,请按照文件 config_defaults.py 中的说明进行操作。

[此处引用安装指南]

4

1 回答 1

2

手动下载 ffmpeg,然后在运行 Python 代码之前,执行

export FFMPEG_BINARY=path/to/ffmpeg

在外壳/终端提示符下。

据我所知,ffmpeg自动下载并不了解树莓派。自动下载代码来自imageio github repo,它只知道“linux32”与“linux64”。看起来它没有 ARM-linux 选项。当 ARM 内核看到非 ARM 映像时,它会抛出您看到的错误。

您可以编辑您的 moviepyconfig-defaults.py文件以指定FFMPEG_BINARY = r"/path/to/ffmpeg".

编辑path/to/ffmpeg在安装后找到它apt-get,执行

dpkg -L ffmpeg | grep bin

在外壳/终端提示符下。它可能在/binor/usr/bin中,并且可能会被称为ffmpegor ffmpeg-x.xx(带有一些版本号)。
感谢这个答案dpkg

于 2016-10-12T17:56:04.010 回答