@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 секунд с конца.
  • Вопрос задан
  • 1297 просмотров
Решения вопроса 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 покажет приблизительную, не точную длительность.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы