Python: редкая проблема генерации .gif с помощью ffmpeg - PullRequest
1 голос
/ 04 октября 2010

У меня проблема, когда я генерирую анимированный GIF из файла movie.avi с помощью ffmpeg из python в Win7.Если я открою окно cmd и выполню эту строку:

"C:\ffmpeg\ffmpeg.exe" -i "C:\ffmpeg\video.avi" -pix_fmt rgb24 -r 10.0 -loop_output 0 -ss 5 -t 10 -s 352x288 -f gif "C:\ffmpeg\video.gif"

ffmpeg.exe отлично сгенерирует gif из видео.Я хочу использовать ffmpeg.exe из моего кода на python для того же, но когда я выполняю этот код из моей программы на python:

argList = ["-i", "C:\\ffmpeg\\video.avi", "-pix_fmt", "rgb24", "-r", "10.0", "-loop_output", "0", "-ss", "5", "-t", "10", "-s", "352x288", "-f", "gif", "C:\\ffmpeg\\video.gif"]  
os.spawnv(os.P_DETACH, "C:\\ffmpeg\\ffmpeg.exe", argList)

Случается что-то действительно редкое: мой video.avi теряет свой размер, теперь это пустой файл с 0 байтами, а movie.gif тоже пустой файл с 0 байтами, поэтому тот же код в окнах cmd работает нормально, и в мою программу на python модифицирует мой файл movie.avi и удаляет все его содержимое (нофайл movie.avi не исчезает, файл все еще существует, но теперь это пустой файл) и создает пустой файл movie.gif.Кто-то знает, почему это происходит?Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 04 октября 2010

Ваш арглист для spawnv должен начинаться с "C:\\ffmpeg\\ffmpeg.exe". Попробуйте это и посмотрите, как это будет.

argList = ["C:\\ffmpeg\\ffmpeg.exe", "-i", "C:\\ffmpeg\\video.avi", "-pix_fmt", "rgb24", "-r", "10.0", "-loop_output", "0", "-ss", "5", "-t", "10", "-s", "352x288", "-f", "gif", "C:\\ffmpeg\\video.gif"]  
os.spawnv(os.P_DETACH, "C:\\ffmpeg\\ffmpeg.exe", argList)
0 голосов
/ 04 октября 2010

@ JoshD

argList = ["-y", "-ss", "750", "-i", "C:\\ffmpeg\\video.avi", "-f", "mjpeg", "-vframes", "1", "-s", "1280x720", "-an", "C:\\ffmpeg\\thumbnail.jpg"]
os.spawnv(os.P_DETACH, "C:\\ffmpeg\\ffmpeg.exe", argList)

Это прекрасно работает без "C:\\ffmpeg\\ffmpeg.exe" в начале spawnv, из-за этого возникла путаница.Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...