Создать новое видео из выбранных секунд более длинного видео - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь создать более короткую версию 10-минутного исходного видеофайла.mp4, который включает в себя только четыре 10-секундных фрагмента исходного файла (то есть с секунд 10 до 20; с 197 по 207; с 393 до 403; с 570 до 580). До сих пор я мог создать только 4 новых файла, копирующих видео и аудио:

ffmpeg -i videofile.mp4 -vcodec copy -acodec copy -ss 10 -to 20 videofile1.mp4 -vcodec copy -acodec copy -ss 197 -to 207 videofile2.mp4 -vcodec copy -acodec copy -ss 393 -to 403 videofile3.mp4 -vcodec copy -acodec copy -ss 570 -to 580 videofile4.mp4

Однако у меня возникли серьезные проблемы при объединении этих 4 подклипов для генерации желаемых 40 секунд out_videofile.mp4. Я нашел этот альтернативный подход, использующий команду "select" в ffmpeg, которая спасает меня от моего "неудачного" процесса конкатенации. Пока что у меня есть:

ffmpeg -i videofile.mp4 -vf "select='between(t,10,20)+between(t,197,207)+between(t,393,403)+between(t,570,580)',setpts=N/FRAME_RATE/TB" -af "aselect='between(t,10,20)+between(t,197,207)+between(t,393,403)+between(t,570,580)" out_videofile.mp4

Полагаю, этот последний код должен дать мне 40 с out_videofile.mp4, который я хочу. Тем не менее, это дает мне «SyntaxError: неверный синтаксис». Есть идеи, где я ошибаюсь?

Спасибо за ваше время в любом случае.

1 Ответ

0 голосов
/ 27 июня 2018

Вам не хватает закрывающей кавычки, но также есть фильтр для сглаживания временных меток аудио.

Используйте

ffmpeg -i videofile.mp4 -vf "select='between(t,10,20)+between(t,197,207)+between(t,393,403)+between(t,570,580)',setpts=N/FRAME_RATE/TB" -af "aselect='between(t,10,20)+between(t,197,207)+between(t,393,403)+between(t,570,580)',asetpts=N/SR/TB" out_videofile.mp4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...