@HanRus

FFmpeg — как обрезать видео с конца?

Здравствуйте!
Подскажите, пожалуйста, как обрезать (удалить) последние 10 секунд видео, оставив всё остальное.
Команда -ss обрезает видео сначала, ищу такую же команду, но для удаления с конца.
-sseof не подходит, т.к сохраняет видео с конца, а мне нужно его удалить.

Пример bat скрипта для удаления части видео в начале.
@echo on

for %%i in (*.mp4) do (
	echo %%~pi
	ffmpeg -ss 00:00:6.57 -i "%%i" -y "out/%%~ni.mp4"
)


Помогите, пожалуйста, подредактировать его так, что бы удалял последние 10 секунд с конца.
  • Вопрос задан
  • 1087 просмотров
Решения вопроса 1
@HanRus Автор вопроса
Подсказали на другом ресурсе решение:

ffmpeg -i %%j -itsoffset 6 -i %%j -c copy -map 0:a:0 -map 1 -shortest -f nut - | ffmpeg -y -i - -c copy -map 0 -map -0:0 -ss 6 -max_muxing_queue_size 9999 "out1/%%~ni.mp4"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
HanRus, спасибо, работает.
Вот только есть небольшая проблема. При обрезке Ffmpeg отображает ошибки. Вот фрагменты лога:

Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #1:0 -> #0:1 (copy)
Stream #1:1 -> #0:2 (copy)
Press [q] to stop, [?] for help
[nut @ 0000024076f8d0c0] Could not find codec parameters for stream 1 (Video: h264 (avc1 / 0x31637661), none, 492x360): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options

...
Metadata:
creation_time : 2018-10-22T19:46:35.000000Z
handler_name : ISO Media file produced by Google Inc. Created on: 10/22/2018.
Stream #0:2(und): Audio: aac ([255][0][0][0] / 0x00FF), 44100 Hz, stereo, fltp (default)
Metadata:
creation_time : 2018-10-22T19:46:35.000000Z
handler_name : ISO Media file produced by Google Inc. Created on: 10/22/2018.
[mp4 @ 0000024078c8c4c0] track 1: codec frame size is not set
...
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:2 -> #0:1 (copy)
[nut @ 000001854beac900] Multiple keyframes with same PTS2.56 bitrate= 409.5kbits/s speed= 796x

Нет ли какого решения для исправления? Я ещё только начинаю осваивать Ffmpeg, многое приходится опробовать "методом тыка".
Ответ написан
Комментировать
Узнать длительность клипа, вычесть 10 секунд, подставить полученную желаемую длительность в -t ???:

ffmpeg -i SOURCE
// найти duration 

ffmpeg \
  -i SOURCE \
  -t XXX \
  -codec copy  \
  DESTINATION
При отсутствии перекодирования , т.к. кодеки те же, процесс должен быть очень быстрым.

Для некоторых форматов ffmpeg покажет приблизительную, не точную длительность.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы