У меня есть несколько видео различной длительности. Я хочу вырезать (удалить) последние 5 секунд всех видео. Могу ли я использовать «ffmpeg» в цикле для обрезки видео? Пожалуйста, помогите мне.
Это даст вам продолжительность вашего файла в секундах:
let A=$(avprobe input.webm 2>&1 | grep "^ *Duration: " | sed "s/^ *Duration: \\([0-9:]*\\).*/(((\\1)/" | sed "s/0\\([0-9]\\)/\\1/g" | sed "s/:/)*60+/g")
Хотя avprobe
возвращает доли секунд, bash не имеет дело с дробями. Так что я просто отбрасываю все, что меньше 1 секунды.
После этого вы можете легко сделать что-то вроде этого:
let A=$A-5
avconv -i input.webm -t $A -c:v copy -c:a copy output.webm
Извините, что не использовали ffmpeg
. Я перешел на avconv
некоторое время назад, я считаю, что варианты должны быть одинаковыми, и если нет, то будет просто переписать их по мере необходимости.
После этого вопрос заключается только в том, чтобы обернуть все это в цикл for и сделать все файлы одновременно.