Как корректно разделить видео с помощью ffmpeg?

Разрезаю видеофайл ffmpeg с сохранением звуковых дорожек.
echo Y | ffmpeg -i original_video.mkv -map 0:a -map 0:v -ss 00:00:04 -codec copy -t 10 cut_1.mkv 
echo Y | ffmpeg -i original_video.mkv -map 0:a -map 0:v -ss 00:00:14 -codec copy -t 20 cut_2.mkv


Открываю получившиеся файлы в VLC media player.
При проигрывании cut_1.mkv первую секунду я вижу черный экран, но соответствующий звук есть.
Далее видео проигрывается нормально. И в конце, около 0.3 секунд, видео перескакивает сразу в конец, то есть отсутствуют эти 0.3 секунды.

При проигрывании cut_2.mkv всё аналогично, но я вижу черный экран первые 4 секунды.
И в конце видео завершается (перескакивает на начало) на 19 секунде, хотя его длительность 20.

Проверил в разных плеерах.
Глюки бывают разные, но так или иначе всегда есть проблемы в начале видео или в конце.

Разрезал видео с помощью MP4Splitter - программа использующая ffmpeg. Те же глюки.
Разрезал видео с помощью Movavi Video Editor 15 Plus (похоже при сохранении фрагмента перекодирует видео). Всё разрезалось нормально, без черных экранов и прочих глюков.

Как корректно разделить видео с помощью ffmpeg?
  • Вопрос задан
  • 1245 просмотров
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler
бекенд-разработчик на python
Проблема в том что вы начинаете вырезать не с ключевого кадра, а перекодирование запрещено. Отсюда и чернота до первого I-frame. Решение с переносом -ss основано на том, что ffmpeg умеет без декодирования прыгать по ключевым кадрам и если -ss стоит до -i, то поток начнет отрезаться как раз со следующего ключевого кадра, а не с указанного вами места.
Ответ написан
Ваш ответ на вопрос

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

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