Можете ли вы склеить 1-минутный клип из файла большего размера, не перекодируя его?

StackOverflow https://stackoverflow.com/questions/1641135

Вопрос

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

Это было полезно?

Решение

Сначала вы захотите понять, как на самом деле работают видеофайлы. Вот несколько руководств, объясняющих, что: чрезмерно Упрощенное руководство по интернет-видео .

Затем вы можете попробовать различные инструменты, которые могут помочь с вырезкой образца. Одним из них является 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 ), чтобы программно сделать это, но это довольно продвинуто для вашего случая использования.

Другие советы

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

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

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

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

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

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

Извлеките 500 мегабайт (500 & # 215; 1000 & # 215; 1000 байтов + & # 8216; издержки мультиплексирования & # 8217;) из выбранного источника. & # 8211; на основе размера файла, как вы можете сказать

Одна любовь. И уважение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top