Здесь профессиональный видеоредактор, не имеющий опыта в FFmpeg, так что терпите меня. У меня есть большая партия видео различной длины, и я хотел бы обрезать их на 10 секунд в начале и на 10 секунд в конце.
Я знаю, что есть команда "-sseof", которая ищет временной код, основанный на конце видео. Однако я могу получить только часть в конце, а не часть ДО указанного времени. Например, это просто дает мне последние 10 секунд:
ffmpeg -sseof -10 -i test.mp4 outputB.mp4
Я хочу прямо противоположное, все до последних 10 секунд.
И я бы очень хотел совместить это с отделкой с самого начала. Моя идеальная формула будет выглядеть так:
ffmpeg -i test.mp4 -ss 10 -to -sseof -10 output.mp4
Но это не работает. Какие-либо предложения? Спасибо!
РЕДАКТИРОВАТЬ:
Решение, предложенное Mulvya, сработало для меня! Вот формула, которую я использовал для запуска сценария для всей папки, вырезая 4,25 секунды с начала и 17,8 секунды с конца каждого клипа (эти значения нужно менять в нескольких местах каждый, но это работает).
for file in *.mp4; do ffmpeg -i $file -filter_complex "[0]split[s1][s2]; [s1]trim=4.25,setpts=PTS-STARTPTS,fifo[bv]; [s2]trim=4.25,setpts=(PTS-STARTPTS)+17.8/TB,fifo[v]; [bv][v]overlay=shortest=1,trim=17.8,setpts=PTS-STARTPTS[fv]; [0]volume=0[b];[0]adelay=17800|17800[a]; [b][a]amix=duration=first,volume=2,atrim=22.05,asetpts=PTS-STARTPTS[fa]" -map "[fv]" -map "[fa]" "${file%.mp4}-trimmed.mp4"; done
Большое спасибо!