Gstreamer: транскодирование видео Matroska в mp4

Аппаратное обеспечение, на котором мы работаем, не поддерживает воспроизведение файлов mkv. Поэтому мне нужно перекодировать видеофайл Matroska (mkv) в видеофайл mp4.

Как я понял из доступных в сети материалов по транскодированию, мне необходимо сделать следующее:

  1. разделите разные потоки файла mkv с помощью элемента matroskademux.
  2. декодировать аудио- и видеопотоки в необработанный формат с помощью доступного декодера mkv и
    передавать эти данные в элемент мультиплексора mp4 и повторно кодировать в требуемый формат.

Может ли кто-нибудь сказать мне, применяю ли я правильный подход? Любая информация/ссылка на это была бы очень полезна.

викрам


person Vikram Desai    schedule 07.12.2011    source источник


Ответы (1)


В зависимости от того, что находится в файле Matroska, вам может вообще не понадобиться декодировать его, просто перекомпонуйте.

Я предполагаю, что видео, например, в формате H264, поэтому просто сделайте ремикс. Ниже приведен пример конвейера gst-launch для повторного мультиплексирования файла с форматами h264 и mp3.

gst-launch-0.10 -v filesrc location=$file \
! matroskademux name="demux" demux. ! h264parse ! queue \
! mp4mux name=mux ! filesink location=$file._out.mp4 demux. \
! mp3parse ! queue ! mux.`

Вы также можете посмотреть на транскодер Transmageddon (www.linuxrising.org), который даст вам то, что вы хотите.

person Christian Schaller    schedule 07.12.2011
comment
Спасибо за ответ. У меня есть еще один вопрос: с помощью приведенной выше команды, которую вы упомянули, я смог повторно преобразовать mkv в mp4 в тех случаях, когда аудиопоток является mp3. Если у mkv есть аудиопоток aac, я пытаюсь использовать aacparser. Каким-то образом очередь конвейера не связывается с элементом aacparse. В одном из сообщений, связанных с aacparse, упоминается, что если для поля frame в аудиопотоке установлено значение true, то элемент aacparse не может связать с конвейерной очередью. В этом случае мне нужно декодировать аудиопоток в необработанный формат, а затем перекодировать его, чтобы он соответствовал приемнику элемента mp4mux? - person Vikram Desai; 09.12.2011
comment
В GStreamer git было внесено множество исправлений для синтаксических анализаторов, цель состоит в том, чтобы через несколько недель выпустить новые выпуски, и я думаю, что они должны решить ваши проблемы. - person Christian Schaller; 09.12.2011