Ваш вопрос читает довольно отличающийся "способом как инструменты???", таким образом, я точно не знаю, будет ли это работать на Вас:
system1 $ passwd=abc123
system1 $ printf "%s\n" "${passwd//?/*}"
******
Что, если Вы увеличиваете свой второй пример немного следующим образом:
$ ffmpeg -r 1 -i data/input-%4d.png -c:v libx264 out.mp4
-r 1
потребности прибыть перед .png файлами, не после.
Как правило опции применяются к следующему указанному файлу. Поэтому порядок важен, и у Вас может быть та же опция на командной строке многократно. Каждое возникновение затем применяется к следующему файлу ввода или вывода.
Если Вы хотите остроту для FFMPEG, который генерирует видео, которое играет в 1 кадре в секунду, что Вы хотите сделать, указывают framerates для обоих вводов и выводов, как это:
% ffmpeg-r 1-i data/input-4d.png-pix_fmt yuv420p-r 10 data/output.mp4
-r 1
означает, что видео будет играть в 1 из исходных изображений в секунду.
-r 10
означает, что видео будет играть в 10 кадрах в секунду.
( -pix_fmt yuv420p
должен просто там гарантировать совместимость с широким спектром программ воспроизведения. Это требуется здесь, например, для видео быть играемым Windows Media Player.)
Я протестировал многих, другой вывод framerates, и 10, кажется, самое низкое количество, которое можно использовать, который все еще произведет видео, которое будет играть VLC.
Конечно, команда выше означает, что каждое исходное изображение умножается, но это - более простой метод, чем "медленный это вниз", один Вы упомянули, и в зависимости от кодека это не может произвести видео, намного больше, чем истинное видео на 1 кадр/с.
Для тестирования этого я просто произвел истинное видео на 1 кадр/с, которое вышло к 2,24 кибибитам. Я затем произвел видео с теми же входными изображениями, но вывод на уровне 24 кадр/с, и оно вышло к 5,76 кибибитам. Это только свыше дважды размера, и нигде около 24 раза размера.:)
Используйте оба параметра -framerate
и -r
Например, чтобы конечное видео выглядело как 1 кадр / с:
ffmpeg -framerate 1 -pattern_type glob -i '*.png' \
-c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
Это похоже на то, что Преобразование кадров PNG в видео при 1 кадре в секунду | Unix & Linux Stack Exchange говорит, но мне нужно было -framerate
вместо -r
, чтобы он работал.
Это упоминается в вики по адресу: http://trac.ffmpeg.org/wiki/Slideshow#Framerates
Он устанавливает выходную частоту кадров на 30
, которую VLC может обрабатывать. , и копирует каждое изображение 30 раз, так что выходное видео выглядит со скоростью 1 кадр / с. См. Также: Проблемы с воспроизведением в VLC видео с низкой частотой кадров из изображений с использованием ffmpeg | Stack Overflow
После этого VLC сможет нормально воспроизводить видео.
Проверено на Ubuntu 16.10, VLC 2.2.4, ffmpeg
3.0.5 в каталоге с 10 PNG.
Это ошибка в VLC (, которая все еще существует в версии 3.0.6 ). После некоторых экспериментов я понял, что VLC вылетает для видео с FPS менее 10 . Так что все видео с 10 FPS и более не должны быть проблемой. Таким образом, в настоящее время нет простого способа получить видео с частотой 1 кадр/с, которое можно было бы воспроизвести в VLC (, не сдавайтесь, продолжайте читать).
Одним из обходных путей является -, как показано в ответе выше -, чтобы имитировать эффект 1 FPS путем дублирования изображений (, когда на самом деле у нас есть FPS, равный 10 или более, что нормально для VLC ).
Пример:Если у вас есть папка с 12 изображениями, и вы хотите создать видео с частотой 1 кадр/с (, которое можно воспроизвести в VLC ), тогда вам нужно продублировать каждое изображение несколько раз (. ] скажем, 10 раз ), а затем скажите FFMPEG сгенерировать видео со скоростью 10 кадров в секунду. Таким образом, мы получим видео с общим количеством кадров 120, где каждое изображение будет воспроизводиться в течение 1 секунды (, так как оно дублируется 10 раз ), что является просто фейком для 1 FPS.
Я предпочитаю использовать параметр fps
, а не -r
(, который показан в другом ответе ), который в некоторых случаях может быть проблематичным (в соответствии с официальной документацией).
ffmpeg -framerate 1 -i "img (%d).jpg" -c:v libvpx-vp9 -vf "fps=10,format=yuv420p" out.mkv
Поскольку входное значение -framerate
меньше выходного fps
, FFMPEG будет дублировать кадры для достижения желаемой частоты кадров на выходе (, равной 10 в соответствии с приведенной выше командой ).
Также важно отметить , что порядок -framerate
и -vf fps
важен ,поскольку эта конфигурация будет применена к следующему упомянутому видео (в -или выходу ). Это согласно официальным документам :
options are applied to the next specified file. Therefore, order is important...