Как я добавляю, что простой или наполовину второй исчезает эффект к запуску или концу видео с помощью ffmpeg и сохраняет все остальное тем же (кодек, качество)
узнайте количество кадров в видеоклипе. Команда:
ffmpeg -i clip.mp4 -vcodec copy -f rawvideo -y /dev/null 2>&1 | tr ^M '\n' | awk '/^frame=/ {print $2}'|tail -n 1
5130
Найдите кадры в секунду
это 24
Добавьте исчезают в /
ffmpeg -i clip.mp4 -vf "fade=in:0:24,fade=out:5106:24" -acodec copy clip-out.mp4
Готово
Для 10-секундного видео продолжительности 1 секунда постепенно появляется в начале, 1 секунда постепенно исчезают в конечном использовании исчезнуть фильтр:
ffmpeg -i input.mp4 -vf "fade=type=in:duration=1,fade=type=out:duration=1:start_time=9" -c:a copy output.mp4
Если Вы хотите исчезнуть, аудио слишком затем добавляет фильтр afade:
ffmpeg -i input.mp4 -filter_complex "[0:v]fade=type=in:duration=1,fade=type=out:duration=1:start_time=9[v];[0:a]afade=type=in:duration=1,afade=type=out:duration=1:start_time=9[a]" -map "[v]" -map "[a]" output.mp4
Автоматизировать его использование ffprobe
получить продолжительность и bc
вычислить время начала для исчезновения в конце:
#!/bin/bash
mkdir fade
for f in *.mp4; do
dur=$(ffprobe -loglevel error -show_entries format=duration -of default=nk=1:nw=1 "$f")
offset=$(bc -l <<< "$dur"-1)
ffmpeg -i "$f" -filter_complex "[0:v]fade=type=in:duration=1,fade=type=out:duration=1:start_time='$offset'[v];[0:a]afade=type=in:duration=1,afade=type=out:duration=1:start_time='$offset'[a]" -map "[v]" -map "[a]" fade/"$f"
done
Это предполагает, что все исходные данные имеют видео и аудио. Если не можно использовать условный оператор в сочетании с ffprobe
определить, существует ли аудио.
... и сохраните все остальное тем же (кодек, качество)
Фильтрация требует кодирования. Вы не можете сохранить качество при выводе формата с потерями. Любой вывод формат без потерь (не рекомендуемый, огромные файлы, проблемы совместимости), или принимает некоторую сумму потери. К счастью Вы, вероятно, не заметите. Просто используйте -crf
опция при выводе видео H.264. Используйте самое высокое значение, которое все еще выглядит достаточно хорошим. См. Wiki FFmpeg: H.264 для получения дополнительной информации.