2009-10-29 3 views
4

У меня есть сайт, который позволяет людям загружать большие видеофайлы в различных форматах (avi, mp4, mkv и flv). Мне нужно сгенерировать 1-минутный «образец» из большего загруженного файла, и образец должен быть в том же формате, иметь те же размеры кадра и скорость передачи битов, что и исходный файл. Есть ли способ просто вырезать часть файла в новый файл? Предпочтительно в ffmpeg (или любом другом инструменте, если ffmpeg невозможно).Можете ли вы объединить 1-минутный клип из большего файла, не перекодируя его?

+0

Все зависит от того, где находятся ключевые кадры. –

+0

Не уверен, что вы имеете в виду ... – 2009-10-29 03:58:00

ответ

14

Сначала вы захотите понять, как работают видеофайлы. Вот набор учебников, объясняющих это: Overly Simplistic Guide to Internet Video.

Затем вы можете попробовать различные инструменты, которые могут помочь в разрезе образца. Один из них - flvtool (если ваш вход FLV) или FFmpeg. С помощью FFmpeg вы можете указать время начала и время остановки, и оно попытается вырезать только то, что вы просите (но ему нужно будет найти ближайший ключевой кадр, чтобы начать нарезку).

Вот команда FFmpeg, чтобы прочитать файл с именем input.flv, начать через 15 секунд в видео, а затем вырезать следующие 60 секунд, но в остальном сохранить одинаковые параметры для аудиокода и видеокодека и записать его в выходной файл:

ffmpeg -i input.flv -ss 15 -t 60 -acodec copy -vcodec copy output.flv

Наконец, если вы хотите, вы можете написать компьютерный код в C или C++ (с использованием библиотек libav FFmpeg), или Java (с использованием Xuggler) программно это сделать, но это довольно сложная для вашего случая использования ,

+0

отличный ответ, спасибо – Profane

+0

Это может привести к проблемам с синхронизацией A/V - см. Мой ответ. –

1

Если у вас возникли проблемы с сохранением авто и видео синхронизируются, как я, следующее может помочь (найти на другом сайте):

ffmpeg -sameq -i file.flv -ss 00:01:00 -t 00:00:30 -ac 2 -r 25 -copyts output.flv 
+0

'-sameq' был удален - см. Мой ответ. –

1

Как отмечает Эван, подход в принятом ответе может привести к потеря синхронизации A/V. Однако его решение неверно, потому что был удален -sameq.

Как указано в https://trac.ffmpeg.org/wiki/Seeking, опция -ss должна быть представлена ​​до -i не после. Это поставило вопрос для меня.

0

Следующая опция заключается в использовании переключателя -fs. Пример:

ff -i ip.mkv -fs 500M -c copy ~/Movies/reservoir/carbohydrates.mkv 

Экстракт 500 мегабайт (500 × 1000 × 1000 байт + «муксинга накладные расходы») от выбранного источника. -based on filesize, как вы можете узнать

One love. И уважение.

 Смежные вопросы

  • Нет связанных вопросов^_^