2014-10-21 2 views
1

У меня есть некоторые изображения, которые я хотел бы отображать в виде фильма. Итак, я немного порхал и нашел ffmpeg. Это учебник я шел с:ffmpeg не делает видео с моих изображений

http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/

Поскольку я не забочусь о чтении, я пропустил право на секции записи. Насколько я могу сказать, это то, что моя программа должна сказать:

import subprocess as sp 
FFMPEG_BIN = "ffmpeg" #I'm on Ubuntu 
command = [ FFMPEG_BIN, 
      '-y', 
      '-f', 'rawvideo', 
      '-vcodec', 'rawvideo', 
      '-s', '1000x1000', 
      '-pix_fmt', 'rgb24', 
      '-r', '24', 
      '-i', '-', 
      '-an', 
      '-vcodec', 'mpeg', 
      'my_output_videofile.mp4' ] 


pipe = sp.Popen(command, stdin = sp.PIPE, stderr = sp.PIPE) 

Однако, когда я запускаю это в Spyder, я получаю сообщение об ошибке:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 540, in runfile 
    execfile(filename, namespace) 
    File "/home/xander/Downloads/python-meep/makeVideo.py", line 15, in <module> 
    pipe = sp.Popen(command, stdin = sp.PIPE, stderr = sp.PIPE) 
    File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child 
    raise child_exception 
    OSError: [Errno 2] No such file or directory 

Почему это происходит ? Я действительно подозрительный: я никогда не упоминаю имена моих картин («Image0.jpeg», «Image1.jpeg», ..., «Image499.jpeg», «Image500.jpeg»). Любая помощь будет оценена!

P.S. Парень в учебнике также говорит, что некоторые кодеки требуют битрейта; Я пробовал это, и он тоже не работал.

ответ

2

Для вашего аргумента -i вы указываете только '-', и сценарий ищет изображение, названное как таковое.

попробовать:

from subprocess import call 
command = [ FFMPEG_BIN, 
     '-i', './image%d.jpg', 
     '-y', 
     '-f', 'rawvideo', 
     '-vcodec', 'rawvideo', 
     '-s', '1000x1000', 
     '-pix_fmt', 'rgb24', 
     '-r', '24', 
     '-an', 
     '-vcodec', 'mpeg', 
     'my_output_videofile.mp4' ] 
call(command) 

Это будет выглядеть для изображений имя image0.jpg, image1.jpg и т.д.

Подробнее здесь: https://trac.ffmpeg.org/wiki/Create%20a%20video%20slideshow%20from%20images

+0

Благодарим вас за предложение! К сожалению, похоже, что это была не единственная ошибка. Я все еще получаю то же сообщение об ошибке, что и странно. Есть ли что-то еще, что выглядит странным в моем коде? Еще раз спасибо! – QuantumFool

+0

Страница, на которую вы ссылались, касалась соединения массива изображений с вызовом ffmpeg. Я обновил, чтобы просто использовать метод 'call'. Также обновлен порядок аргументов как -i, чтобы быть ближе к вершине для меня. – moonthug

1

Укажите полный путь к ffmpeg:

FFMPEG_BIN = "/usr/local/bin/ffmpeg" 

или где бы оно ни было. Также убедитесь, что он выполним, запустив chmod ugo+x.

Кроме того, как упоминалось в другом сообщении, ваш ввод объявлен как -, что означает, что ffmpeg ожидает, что вы нанесете на него необработанные кадры RGB24. Наверное, не то, что вы хотите, если только ваша программа Python не делает этого (но я не вижу его в вашем коде).

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