Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Цифровые технологии » Видео и аудио: обработка и кодирование » Изменение контейнера из mkv/avi в mp4 + кодирование видео и аудио.

Ответить
Настройки темы
Изменение контейнера из mkv/avi в mp4 + кодирование видео и аудио.

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток! Пытаюсь настроить автоматическое "кодирование" фильмов из 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 без потери качества и дорожек?

Отправлено: 14:33, 01-06-2012

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6522
Благодарности: 1479

Профиль | Отправить PM | Цитировать


Был бы Виндоуз, может быть, подошли бы Xvid4PSP или Freemake Video Converter, с линуксом помочь, к сожалению, не могу.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:31, 03-06-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Забанен


Сообщения: 6158
Благодарности: 1300

Профиль | Цитировать


Можете попробовать avidemux-cli
Код: Выделить весь код
$ avidemux2_cli \ 
> --nogui \
> --video-codec COPY \ #( или X264, если в исходнике не H.264)
> --audio-codec AAC \ #(или COPY, если в исходнике уже AAC)
> --output-format MP4 
> --load input.mkv \
> --save output.mp4
У меня минутный семпл 720p в вышеприведённом примере перепаковало за 6 секунд, одной командой.

По поводу нескольких дорожек ничего не могу сказать, документация к CLI-версии avidemux скудновата, с разбегу не нашёл, как выбирать. Субтитры отвалились (а разве MP4 умеет их держать в себе?) В общем, пробуйте, может у вас лучше получится.

Последний раз редактировалось vadblm, 03-06-2012 в 17:30.


Отправлено: 17:18, 03-06-2012 | #3


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо за совет, попробую. mp4 - это контейнер как и mkv, в него можно всё запихнуть. Чувствую что скорость кодирования уже не так важна(хотя кодироваться будут терабайты). Главное, чтоб работало)

Отправлено: 11:16, 04-06-2012 | #4



Компьютерный форум OSzone.net » Цифровые технологии » Видео и аудио: обработка и кодирование » Изменение контейнера из mkv/avi в mp4 + кодирование видео и аудио.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Изменение звукового контейнера из DTS в Dolby Digital в mkv и m2ts Ment69 Видео и аудио: обработка и кодирование 2 15-12-2010 17:25
Мультимедиа - В какой проге делать подмену аудио, видео и сведение аудио и видео? ab Видео и аудио: обработка и кодирование 24 16-02-2009 16:48
Заливка в wmv контейнер, из mov контейнера, wmv2/3 потока видео. Чем? EsTaF Видео и аудио: обработка и кодирование 0 01-09-2007 14:46
Распределенное кодирование видео SAN40 Видео и аудио: обработка и кодирование 7 06-04-2007 23:10




 
Переход