Как правильно декодировать видеопоток MPEG-4, отправленный многоадресной рассылкой? - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь просмотреть видеопоток MPEG-4 с IP-камеры, которая отправляется с помощью многоадресной передачи UDP с использованием gstreamer-java. Каждый кадр, отправленный камерой, разбивается на несколько UDP-пакетов. После сборки полных кадров из UDP-пакетов я получаю последовательность I-кадров и P-кадров, представленных в виде байтовых массивов. Я помещаю каждый из этих кадров в «AppSrc», который связан с «capsfilter», который связан с «decodebin». Проблема заключается в следующем: gstffmpegdec.c: 2259: gst_ffmpegdec_frame: ffdec_mpeg4: ошибка декодирования (len: -1, have_data: 0). Я также попробовал следующую цепочку: apprc => capsfilter => mpeg4videoparse => decodebin => videosink. Результат был таким же. Что я должен сделать, чтобы обойти эту проблему?

1 Ответ

0 голосов
/ 07 июля 2011

Кажется, я нашел один способ, и теперь я проверяю его на стабильность. Я скомпилировал из мерзавца (git clone git: //anongit.freedesktop.org/gstreamer/gst-plugins-good) ядро gstreamer, пакеты "base", "good" и "bad". И тогда я применил плагин "xviddec", который теперь способен обрабатывать буферы с заглавными буквами "video / mpeg, mpegversion = 4".

Таким образом, описание конвейера: «mpeg4videoparse name = parser! Xviddec! Ffmpegcolorspace! Capsfilter name = outfilter», которое связано с объектом AppSrc и объектом VideoComponent оболочки «gstreamer-java».

Чтобы указать путь к моим скомпилированным двоичным файлам gstreamer, я передаю следующий параметр JVM: "-Djna.library.path =" path_to_my_home / бен / GStreamer / Библиотека».

Обратите внимание, что для компиляции "xviddec" требуется установить пакет "libxvidcore-dev".

...