Вопрос или проблема
Я пытаюсь создать видеопредварительные просмотры, состоящие из 10 клипов по 1 секунде. Моя проблема в том, чтобы пропустить первые несколько секунд входных файлов, так как они обычно все черные и без содержания.
Текущая команда:
ffmpeg -y -i inputfile.mp4 -filter_complex "[0:v]select="lt(mod(t,${duration}/10),1)",setpts=N/(FRAME_RATE*TB),scale=320:-2" -an outputfile.mp4
Итак, есть ли у вас советы, как я могу пропустить первые несколько секунд?
Просто посмотрев на страницу man для ffmpeg здесь, вы можете использовать множество опций для достижения нужного результата.
-ss и -timestamp, вероятно, будут работать лучше всего.
Итак, команда, которую вы ищете, выглядит следующим образом:
ffmpeg -y -i inputfile.mp4 -ss 00:00:10 -filter_complex "[0:v]select="lt(mod(t,${duration}/10),1)",setpts=N/(FRAME_RATE*TB),scale=320:-2" -an outputfile.mp4
Обратите внимание на формат после опции -ss.
Ответ или решение
Для создания коротких видеопреviews, состоящих из 10 роликов по 1 секунде каждый, с пропуском первых 10 секунд видео, вам необходимо использовать инструмент FFmpeg с соответствующими параметрами. Давайте рассмотрим, как это сделать, и создадим правильную команду.
Шаги для создания видеопреviews с FFmpeg
-
Пропуск первых 10 секунд: Используйте параметр
-ss
для указания точки начала обработки видео. Поскольку вы хотите пропустить первые 10 секунд, вы должны установить это значение. -
Создание отборочных клипов: Вы используете фильтр
select
для выбора определённых кадров на основе времени. Это позволит вам создать 10 отрезков по 1 секунде. -
Вывод видео: Укажите параметры для вывода формата и качества видео.
Команда для выполнения данной задачи
Вот команда, которая соответствует вашим требованиям:
ffmpeg -y -i inputfile.mp4 -ss 00:00:10 -filter_complex "[0:v]select="lt(mod(t,${duration}/10),1)",setpts=N/(FRAME_RATE*TB),scale=320:-2" -an outputfile.mp4
Разбор команды
-y
: Перезаписывает выходной файл без запроса подтверждения.-i inputfile.mp4
: Указывает входной видеофайл.-ss 00:00:10
: Начинает обработку с 10-й секунды видео, пропуская первые 10 секунд.-filter_complex
: Здесь вы применяете несколько фильтров:- **
select=
: Используется для выбора кадров. Функцияmod(t,${duration}/10)
выдаёт значение времени, что позволяет отбирать 1-секундные промежутки. - *`setpts=N/(FRAME_RATETB)`**: Корректирует временные метки отобранных кадров.
scale=320:-2
: Изменяет размер видео до ширины 320 пикселей, сохраняя пропорции.
- **
-an
: Указывает, что аудиодорожка не нужна в выводе.outputfile.mp4
: Имя выходного файла, который будет содержать отобранные клипы.
Рекомендации
- Для лучшего качества, вам стоит экспериментировать с параметрами масштабирования и выбора кадров, чтобы удостовериться, что получаемые клипы соответствуют вашим ожиданиям.
- Обратите внимание на производительность вашей системы при обработке больших видеофайлов или высококачественных входов.
- FFmpeg поддерживает множество форматов, поэтому вы можете изменить выходной формат видео, если это необходимо, добавив соответствующее расширение к имени выходного файла.
Заключение
Используя предложенную команду, вы сможете эффективно создать видеопреviews, пропуская первые 10 секунд, и отбирать нужные 1-секундные клипы. FFmpeg — мощный инструмент, который открыт для расширения функциональности, позволяя настраивать обработку видео под ваши конкретные нужды. Если возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться за советом.