FFMPEG Розщеплення 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
FYI для тих, хто читає це: Не використовуйте -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 хвилин у відео з bigfile.mp4 та smallfile2.mp4, починаючи з 50 хвилин і закінчуючи в кінці bigfile.mp4.


2
Використовуючи цей метод у файлі mp4, я отримую перші дві секунди кожного створеного файлу у вигляді замороженого кадру (звук відтворюється нормально). Якась відома причина цього?
Рон Харлев

Звучить як клоп. Оновлення до останнього ffmpeg.
Роберт

@Robert Я багато разів оновлювався з 2010 року. Дякую.
fideli

@RonHarlev Це очікувана поведінка. Без повторного кодування ви можете вирізати відео лише на "ключових кадрах". Кадри між ключовими кадрами не несуть у собі достатньо інформації для створення повноцінного зображення. Дивіться: trac.ffmpeg.org/wiki/Seeking#Seekingwhiledoingacodeccopy
Філіп Трашер

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.