![]() |
Изменение контейнера из mkv/avi в mp4 + кодирование видео и аудио.
Доброго времени суток! Пытаюсь настроить автоматическое "кодирование" фильмов из mkv/avi в mp4. Нужно сделать это автоматизированно и максимально быстро.
Цель: просто поменять контейнер, без перекодирования и потери качества, с сохранением всех звуковых дорожек, субтитров, и т.д. Нужно чтоб эти фильмы можно было проигрывать в flash плеере, и на компьютере через обыкновенные плееры. Для mkv: Поскольку нужно всё автоматизировать и сделать максимально быстро, то придётся извращаться. MP4 контейнер требует звук в aac. Видео в контейнере mkv уже ужато всяческими x264. Поэтому видео кодировать не нужно, достаточно извлекать видео дорожку. Аудиодорожки тоже надо извлекать. Те, что в aac мы только извлекаем. А те, что в ac3, dts, придётся перекодировать в aac. К сожалению не нашёл метода кодирования сразу всего файла. Для автоматизации всё будет кодироваться на линуксе, и нужны только консольные программы. ffmpeg не умеет адекватно кодировать фильмы из mkv в mp4 с сохранением качества, и всех дорожек. Он по умолчанию берет только первую дорожку, вырезая остальные. Параметры -map 0:1 и т.д. в 50% работают некорректно(т.к. видео файлы бывают разными, и даже при правильном указании количества дорожек ffmpeg часто ругается). Пришлось с помощью mediainfo, или mkvmerge, или ffprobe пропарсить всю информацию о видео файле. С помощью mkvextract tracks извлечь все дорожки, сабы. С помощью ffmpeg перекодировать ac3, dts аудиодорожки в aac. А потом MP4Box'ом упаковать в mp4 контейнер с перемещением метаданных в начало. Всё работает отлично, видео можно смотреть на любом плеере с выбором аудиодорожек. Смотреть во flash и html5 плеере с перемоткой на любой момент(псевдостриминг). Но сталкнулся с проблемой. Например для кодирования видео рамером около 10-30 GB. Если в видеофайле много звуковых дорожек, то чем больше дорожек в получаемом MP4 файле, тем дольше его открывают все плееры. Возможно причина в том, что плеер не может нормально определить продолжительность фильма. В исходном файле длина виде и аудио дорожек одинакова. Но в mp4 некоторые аудиодорожки могут отличаться по длине от видео. И чем больше таких дорожек, тем проблемнее открыть видео(плеер может минуту думать и вычислять длину фильма). Почему при извлечении дорожек и упаковке их в mp4 меняется продолжительность? Как можно "исправить" mp4 файл, чтоб он нормально открывался при большом количестве аудиодорожек? Или может кто знает другой способ кодирования mkv в mp4 без потери качества и дорожек? |
Был бы Виндоуз, может быть, подошли бы Xvid4PSP или Freemake Video Converter, с линуксом помочь, к сожалению, не могу.
|
Можете попробовать avidemux-cli
Код:
$ avidemux2_cli \ По поводу нескольких дорожек ничего не могу сказать, документация к CLI-версии avidemux скудновата, с разбегу не нашёл, как выбирать. Субтитры отвалились (а разве MP4 умеет их держать в себе?) В общем, пробуйте, может у вас лучше получится. :) |
Спасибо за совет, попробую. mp4 - это контейнер как и mkv, в него можно всё запихнуть. Чувствую что скорость кодирования уже не так важна(хотя кодироваться будут терабайты). Главное, чтоб работало)
|
Время: 08:00. |
Время: 08:00.
© OSzone.net 2001-