Как сжать видеофайлы MP4 с помощью FFmpeg на macOS
Сжатие видеофайлов может быть необходимым шагом для оптимизации пространство хранения и обеспечения совместимости с различными устройствами. Если у вас есть видеофайлы, созданные GoPro, и вы хотите сохранить их в формате MP4, этот процесс может включать в себя работу с метаданными, такими как данные GPS. В данной статье мы расскажем, как использовать FFmpeg 7.1 для сжатия файлов MP4 на macOS, избегая возможных ошибок.
Проблема с выводом MP4
При попытке изменить расширение выходного файла с .mov
на .mp4
, вы можете столкнуться с ошибками. Например, вы могли получить сообщение об ошибке, что кодек не поддерживается для этого контейнера:
[mp4 @ 0x13af06a70] You requested a copy of the original timecode track so timecode metadata are now ignored
[mp4 @ 0x13af06a70] Could not find tag for codec none in stream #2, codec not currently supported in container
[out#0/mp4 @ 0x600000194180] Could not write header (incorrect codec parameters ?): Invalid argument
Эти ошибки возникают из-за того, что некоторые потоки, такие как tmcd
(временные метки), не поддерживаются в формате MP4 и не могут быть скопированы с помощью стандартного метода.
Шаги для успешного сжатия видео
Для успешного сжатия видеофайла в формат MP4 с сохранением нужных метаданных, важно правильно настроить команду FFmpeg. Оригинальная команда, которая работает для формата MOV, выглядит следующим образом:
ffmpeg -i GX-0195-02.MP4 -copy_unknown -map 0 -map_metadata 0 -c:v hevc_videotoolbox -q:v 45 -vtag hvc1 GX-0195-02-htb45.mov
Однако при замене расширения на .mp4
, возникают проблемы. Чтобы обойти эти ошибки, вам нужно явно указать, какие потоки должны быть включены в вывод. Например, использование следующей команды:
ffmpeg -i GX-0195-02.MP4 -copy_unknown -map 0:0 -map 0:1 -map 0:3 -map_metadata 0 -c:v hevc_videotoolbox -q:v 45 -vtag hvc1 GX-0195-02-htb45.mp4
Что делает команда
- -copy_unknown: Этот флаг говорит FFmpeg копировать все неизвестные потоки (например, метаданные) в выходной файл.
- -map 0:0 -map 0:1 -map 0:3: Эти параметры указывают, что необходимо включить видеопоток, аудиопоток и другие поддерживаемые потоки, но пропустить поток временной метки (tmcd), который не поддерживается в формате MP4.
- -map_metadata 0: Копирует метаданные из входного файла.
- -c:v hevc_videotoolbox и -q:v 45: Определяют кодек и качество видео.
Заключение
Работа с видеофайлами, созданными GoPro, может быть сложной задачей, особенно если необходимо сохранить метаданные и сразу же сжать файл. Используя FFmpeg на macOS, вы можете легко решить эти проблемы, правильно формируя команды. Теперь у вас есть рабочий пример, который поможет вам сжать видеофайлы в MP4 без потери данных и метаданных. Не забывайте проверять потоковую структуру ваших файлов, чтобы понимать, какие потоки можно оставить, а какие удалить.