2016-10-12 5 views
1

Я пытаюсь использовать MoviePy с Python 3.2.3 на Raspian. Я установил его (для Python 2.7, 3.2 и 3.5 ... длинный рассказ) и линииОшибка формата MovieEp OSError Exec - Отсутствует Shebang?

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 

Я исследовал эту ошибку, и это, кажется, что-то делать с притон линия отсутствует где-то. Правильно ли это, если да, как мне найти, где он отсутствует, и что я могу добавить? Благодаря

Edit: Согласно комментарий CXW, я установил moviepy с помощью команды

pip-3.2 install moviepy 

(я, возможно, использовал 'Sudo', а)

FFMPEG должен был автоматически загружать, когда я первый используется moviepy:

MoviePy depends on the software FFMPEG for video reading and writing. > You don’t need to worry about that, as FFMPEG should be automatically > downloaded/installed by ImageIO during your first use of MoviePy (it takes a few seconds). If you want to use a specific version of FFMPEG, follow the instructions in file config_defaults.py.

[Цитата из руководства по установке here]

+0

Какие 'cmd' и' popen_params' в 'sp.Popen' позвонить? Если вы этого не знаете, вы можете запустить 'python -m pdb -c 'b /usr/local/lib/python3.2/dist-packages/moviepy/video/io/ffmpeg_reader.py:237" -cc your_script. py' per [this] (http://stackoverflow.com/a/33808301/2877364), затем 'p cmd' и' p popen_params' в командной строке pdb, когда вы нажмете точку останова. – cxw

+0

Это может быть не shebang вообще - это могут быть двоичные файлы, скомпилированные для неправильной архитектуры;). Пожалуйста, отредактируйте свой вопрос] (https: // stackoverflow.com/posts/40004639/edit), чтобы включить команды, которые вы использовали для установки moviepy и ffmpeg. – cxw

+0

@cxw Ваша команда выдала сообщение «Ошибка: -c не существует» – tburrows13

ответ

2

вручную загрузить FFmpeg, то перед запуском кода Python, сделать

export FFMPEG_BINARY=path/to/ffmpeg 

в/терминальной строке.

Насколько я могу судить по the source, автоматическая загрузка ffmpeg не знает о малиновой писе. auto-download code тянет от the imageio github repo, который знает только «linux32» и «linux64». Не похоже, что у него есть опция ARM-linux. Когда ядро ​​ARM видит изображение без ARM, оно выдает ошибку, которую вы видите.

Вместо того, чтобы использовать переменную окружения, вы можете отредактировать файл вашего видео config-defaults.py, чтобы указать FFMPEG_BINARY = r"/path/to/ffmpeg".

Редактировать найти path/to/ffmpeg после установки с apt-get, сделать

dpkg -L ffmpeg | grep bin 

в/терминальной строке. Вероятно, он будет в /bin или /usr/bin и, вероятно, будет называться ffmpeg или ffmpeg-x.xx (с некоторым номером версии).
Благодаря this answer для dpkg

+0

Я установил FFMPEG с 'suso apt-get install ffmpeg'. Где «подсказка оболочки» - это терминал? – tburrows13

+0

Я положил его в терминал, ничего (хорошего или плохого) не произошло. Когда я запустил программу, я получил ошибку: – tburrows13

+0

У меня ошибка: «Возможно, файл IOError [...] может быть испорчен [...] может использовать устаревшую версию FFMPEG [...] В Debian, например версия в репозиториях устарела. Обновите последнюю версию с веб-сайта ». Похоже, что я сам объясняю и является самым полезным сообщением об ошибке, которое я когда-либо видел :) – tburrows13

Смежные вопросы