Обрежьте сегмент живого, все еще кодирующего H.264/FLV с помощью ffmpeg

Я кодирую видео с помощью ffmpeg в H.264, хранящееся в контейнере FLV. Я хотел бы иметь возможность обрезать сегменты этого видео, поскольку оно все еще кодируется. Видео не содержит звука.

Я кодирую видео так:

ffmpeg -i recording.mp4 -c libx264 output.flv

И я пытаюсь обрезать видео с помощью:

ffmpeg -i output.flv -ss 00:00:00.000 -t 00:00:01.000 -c copy output2.mp4

Пока видео все еще кодируется, я вижу эту ошибку, когда пытаюсь обрезать:

Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

Также при кодировании с помощью ffprobe я получаю следующую информацию:

Duration: 00:00:26.96, start: 0.080000, bitrate: 126 kb/s
  Stream #0:0: Video: h264 (High), yuv420p, 640x480, 25 fps, 25 tbr, 1k tbn, 50 tbc

Как я могу обрезать этот файл, пока он все еще кодируется? Я готов изменить форматы контейнеров с flv на что-то другое, если это необходимо. В конечном счете, мне нужно быть в формате mp4, но я не возражаю против перетасовки контейнеров, чтобы позволить мне обрезать части во время кодирования.

Работает здесь. Какая версия ffmpeg?
2.8.14. Из официальных репозиториев Ubuntu 16.04
Получите бинарный файл с johnvansickle.com/ffmpeg и проверьте.
Я только что сделал. Однако теперь обрезает без ошибок, но результирующий файл имеет длину 0 и в нем 0 кадров. Я использовал ту же команду, что и выше, но использовал сборку, на которую вы ссылаетесь. Я пробовал как релиз, так и сборки git. Используете ли вы общедоступный пример видео, который я мог бы найти где-нибудь и попробовать сам?
Будет ли такое же поведение, если вы отрежете более длинный сегмент?
Да, такое же поведение на более длинном отрезке

Ответы (1)

Оставьте FLV, но обрежьте с помощью поиска и длительности демультиплексора.

ffmpeg -ss 00:00:03.000 -t 00:00:01.000 -i output.flv -c copy output2.mp4

Кроме того, пропустите, -ssесли это 0начало потока.

Пропуск -ss для начала - это то, что исправило это для меня. Похоже, файл действительно начинался с 0.080. Как бы я узнал об этом, если бы писал скрипт для обрезки файла?