Я использую ffmpeg для потоковой передачи видеофайла на сервер RTMP. Я использую эту -re
опцию, чтобы гарантировать, что видео транслируется с правильной скоростью на источнике прямой трансляции. Иногда я хочу транслировать видео, начиная с нескольких минут. Однако, если я добавлю -ss 00:03:00
, например, первые несколько кадров не транслируются, но ffmpeg все равно проходит по ним на -re
скорости, что означает, что мне придется ждать (в данном случае) три минуты, прежде чем поток можно будет увидеть, и в этот момент он начнется через три минуты.
Это технически то, что я просил, но также бесполезно в контексте. Есть ли способ сказать ffmpeg начать в указанное время в, но перейти прямо туда, чтобы он вел себя полезно при использовании -re
?
В списке рассылки ffmpeg-user есть как минимум два случая, когда люди задавались вопросом, как это сделать, но не нашли очевидного решения.
решение1
Попробуйте указать -ss 00:03:00 перед входным файлом.
Я не пробовал это с захватом экрана/трансляцией в реальном времени, но знаю, что это работает со стандартным синтаксисом перекодирования ffmpeg.
Например, следующая команда введет файл, перекодирует весь файл в h264, а затем сохранит только вывод, начиная с отметки 3 минуты.
ffmpeg -i [INPUT] -ss 00:03:00 -c:v h264 [output]
С другой стороны, следующая команда введет файл на отметке 3 минуты, перекодирует с этой точки, а затем сохранит вывод. Выходной файл должен быть идентичен выводу выше, но поскольку первые три минуты не декодируются, время обработки намного короче.
ffmpeg -ss 00:03:00 -i [INPUT] -c:v h264 [output]
Опять же, я не знаю, работает ли это с прямой трансляцией. Надеюсь, это поможет!