FFMPEG Splitting MP4 с таким же качеством


51

У меня есть один большой файл MP4. Я пытаюсь разбить его на более мелкие файлы.

ffmpeg -i largefile.mp4 -sameq -ss 00:00:00 -t 00:50:00 smallfile.mp4

Я думал, что использование -sameq сохранит те же настройки качества. Однако я не должен понимать, что это делает.

Я надеюсь сохранить одинаковое качество (аудио / видео) и сжатие с разделенными файлами Однако этот параметр значительно увеличивает размер разделяемых файлов.

Какой флаг (ы) мне нужно установить, чтобы сохранить одинаковое качество и атрибуты в разделенных файлах при одинаковом соотношении качества и размера?

Например, если мой исходный файл составляет около 12 ГБ и имеет размер 1920x1080 с битрейтом 10617 кбит / с и частотой кадров 23 кадра / с и 6-канальным аудио со скоростью 317 кбит / с, я бы хотел, чтобы разделенные файлы были такими же, только треть этого размера ( если я разделю это на три части).


3
К сведению всех, кто читает это: не используйте -sameq, это не означает «то же качество» .
Заз

Ответы:


81

Если вы хотите просто разделить видео без перекодирования, используйте copyкодек для аудио и видео. Попробуй это:

ffmpeg -ss 00:00:00 -t 00:50:00 -i largefile.mp4 -acodec copy \
-vcodec copy smallfile.mp4

Обратите внимание, что это создает только первый сплит. Следующее можно сделать командой, начинающейся с ffmpeg -ss 00:50:00.

Это можно сделать с помощью одной команды:

ffmpeg -i largefile.mp4 -t 00:50:00 -c copy smallfile1.mp4 -ss 00:50:00 -c copy smallfile2.mp4

Это создаст smallfile1.mp4, заканчивающийся через 50 минут в видео largefile.mp4 и smallfile2.mp4, начинающийся через 50 минут и заканчивающийся в конце largefile.mp4.


2
Используя этот метод для файла mp4, я получаю первые две секунды каждого созданного файла в виде стоп-кадра (звук воспроизводится нормально). Любая известная причина для этого?
Рон Харлев

Похоже, ошибка. Обновление до последней версии ffmpeg.
Роберт

@ Роберт Я обновлялся много раз с 2010 года. Спасибо.
Фидели

@RonHarlev Это ожидаемое в настоящее время поведение. Без перекодирования вы можете вырезать видео только в «ключевых кадрах». Кадры между ключевыми кадрами сами по себе не содержат достаточного количества информации для создания полного изображения. Смотрите: trac.ffmpeg.org/wiki/Seeking#Seeking whiledoingacodeccopy
Филипп Трашер

3

Альтернативный способ сделать это:

// create a 2-min clip
ffmpeg -i input.mp4 -ss 00:10:00 -to 00:12:00 -c copy output.mp4

/**
* -i  input file
* -ss start time in seconds or in hh:mm:ss
* -to end time in seconds or in hh:mm:ss
* -c codec to use 
*/

Качество файла остается неизменным, потому что мы используем -c copyдля копирования исходных аудио + видео потоков на выход.

Ссылка, список часто используемых команд FFmpeg: DigitalFortress

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.