Мне нужно обрезать только первые 1 или 2 секунды из серии записей FLV различной, неопределенной длины. Я нашел много ресурсов для извлечения указанной длительности из видео (например, 30-секундных клипов), но не для продолжения до конца видео.
Обе эти попытки просто дают скопированную версию видео без желаемой обрезки:
ffmpeg -ss 2 -vcodec copy -acodec copy -i input.flv output.flv
ffmpeg -ss 2 -t 120 -vcodec copy -acodec copy -i input.flv output.flv
Вторая мысль была такой: возможно, если бы я указал длину, превышающую то, что было возможно, она бы дошла до конца. Нет кости.
Я знаю, что это не проблема с кодеками или использованием секунд вместо временного кода, так как следующее сработало:
ffmpeg -ss 2 -t 5 -vcodec copy -acodec copy -i input.flv output.flv
Есть еще идеи? Я открыт для использования других (основанных на Windows) инструментов командной строки, однако я полностью поддерживаю ffmpeg, так как я уже использую его для создания миниатюр и знаком с ним.
Если это поможет, все мои видео будут меньше 2 минут.
ОБНОВИТЬ:
Я переключился на использование Mencoder ( http://www.mplayerhq.hu/ ), так как похоже, что ffmpeg не добьется этого без некоторого дополнительного взлома.
Синтаксис Mencoder для выполнения того, что я намеревался сделать:
mencoder.exe -ss 2 -oac copy -ovc copy input.flv -o output.flv
mencoder
пример, выше; илиffmpeg
пример ниже?Ответы:
Пытаться:
Я думаю, что входной параметр должен быть первым.
источник
-i
) при копировании или даже транскодировании с более старой версией FFmpeg использует поиск по ключевому кадру . Это намного быстрее, но жертвует точностью. Если вы используете его в качестве выходного параметра, процесс потенциально намного медленнее (вход декодируется кадр за кадром даже для отброшенных частей), но точен. Хотя вопрос старый, я думаю, что это должен быть принятый ответ.Повороты из этой команды будет обрезать видео с 2 -х секунд на, как и ожидалось:
Проблема была с интервалом ключевого кадра в input.flv. Он был установлен на 5 секунд, что дало 3 секунды черного кадра в начале видео (5 - 2 = 3). С тех пор я изменил свой интервал ключевых кадров на 1 секунду, хотя 2 секунды, вероятно, также дадут желаемые результаты в моем случае.
ОБНОВЛЕНИЕ: Обновлен порядок
-i
и-ss
параметры для ответа Дэйва, который я принял за кредит.источник
-vcodec copy -acodec copy
все мои команды редактирования. Перекодирование предотвратило черные кадры в начале моего видео или не вырезало в нужном месте (разница в секундах без перекодирования переводила почти в 5-секундную разницу в видео). Итак, я закончил замену-vcodec copy
на-vcodec libx264 -crf 0
.-vcodec copy
потому, что фрагмент не начинается на ключевом кадре. Я получал неподвижное изображение или черное изображение в течение N секунд до следующего ключевого кадра. Если я на самом деле перекодирую, а не копирую, это работает как положено. Таким образом, несмотря на то, что мой вход и выход оба H264, мне все еще нужно было перекодировать (используя-vcodec libx264
вместо-vcodec copy
).-i
Должен прийти перед-ss
.Используйте -ss и -to перед -i вот так:
источник
Обновляя этот ответ, с 2019 года команда теперь:
источник