новичок l'm при обработке видеоданных.
Я хотел бы понять, как прочитать следующую ffmpeg инструкцию ниже
import subprocess
L=subprocess.call('ffmpeg -i %s -r 1 -s qvga -t 1 -f image2 %s' % (videoName,frameName), shell=True)
Через эту инструкцию, как l может адаптировать его для получения всех кадров данного видео?
Спасибо
Я хотел бы понять, как прочитать следующую ffmpeg инструкцию
Ваш ffmpeg
команда полузапутывается путем сценариев, таким образом, фактическая команда не известна, но здесь является объяснением каждой опции:
-i
указывает на вход.-r 1
наборы производят частоту кадров к 1. Это не нужно, если Вы хотите произвести единственное изображение или если Вы хотите произвести все изображения. В этом примере это используется для вывода одного кадра в секунду, который пропустил бы много кадров.-s qvga
наборы производят ширину x высота к "qvga", который является псевдонимом для 320x240.-t 1
устанавливает выходную продолжительность на 1 секунду. Это не нужно, если Вы хотите произвести единственное изображение или если Вы хотите произвести все изображения. Это часто добавляется молодыми пользователями, пытающимися производить единственное изображение, но -frames:v 1
должен использоваться вместо этого.-f image2
Часто лишняя опция раньше устанавливала выходной формат или muxer. Это используется, если Ваше выходное имя неоднозначно (возможно, из-за сценариев). Иначе, ffmpeg
автоматически выберет надлежащий muxer для выводов изображения.как l может адаптировать его для получения всех кадров данного видео?
Самая простая, команда нев виде сценария для получения всех кадров:
ffmpeg -i input %04d.png
Это произведет 0001.png
, 0002.png
, 0003.png
, и т.д., Если Вы хотите больше, чем числовая последовательность, можно использовать что-то как output_%05d.png
который привел бы к output_00001.png
.
Поскольку больше информации видит Документацию FFmpeg: Изображение Muxer.
import subprocess
L=subprocess.call('ffmpeg -i %s -r 1 -s qvga -t 1 -f image2 %s' % (videoName,frameName), shell=True)
Информация:
import subprocess
: Модуль подпроцесса позволяет Вам запустить новые приложения из своей программы Python.
L=subprocess.call(...)
: Присвойте вывод call()
метод к переменной L
.
ffmpeg -i %s -r 1 -s qvga -t 1 -f image2 %s' % (videoName,frameName), shell=True
: Команда для выполнения сюда ffmpeg
-i %s
: введите имя файла, полученное от videoName
переменная-> input file url
-r 1
: частота кадров.
-s qvga
: формат кадра.
-f image2
: Вызовите формат файла ввода или вывода
-t 1
: При использовании в качестве выходной опции (перед выходным URL), прекратите писать вывод после того, как его продолжительность достигает продолжительности.
% (videoName,frameName)
: Строка Python, форматирующая, который заменит %s
последовательности в предыдущей строке с объектами в кортеже.
shell=True
: Используйте определенные функции оболочки как разделение слова или расширение параметра
Использование:
#!/usr/bin/env python
import subprocess
L=subprocess.call('ffmpeg -r 5 -i out.ogv fmprg_%04d.png', shell=True)
L()
chmod u+x filename.sh
,./filename.sh
Информация:
fmprg_%04d.png
: Создает изображения с 0000, 0001, 0002, 0004, ...
между fmprg_
и .png
.
Читайте:
man ffmpeg