diff --git a/src/VideoStreaming/VideoReceiver.cc b/src/VideoStreaming/VideoReceiver.cc index b83f36797531de24ec089d77d3d3f81f752cd542..23b947daf688764c6dd335d2f08a7f92ca6ad0b8 100644 --- a/src/VideoStreaming/VideoReceiver.cc +++ b/src/VideoStreaming/VideoReceiver.cc @@ -359,9 +359,17 @@ VideoReceiver::_makeSource(const QString& uri) break; } - if ((parser = gst_element_factory_make("parsebin", "parser")) == nullptr) { - qCritical() << "VideoReceiver::_makeSource() failed. Error with gst_element_factory_make('parsebin')"; - break; + // FIXME: AV: Android does not determine MPEG2-TS via parsebin - have to explicitly state which demux to use + if (isTcpMPEGTS || isUdpMPEGTS) { + if ((parser = gst_element_factory_make("tsdemux", "parser")) == nullptr) { + qCritical(VideoReceiverLog) << "gst_element_factory_make('tsdemux') failed"; + break; + } + } else { + if ((parser = gst_element_factory_make("parsebin", "parser")) == nullptr) { + qCritical() << "VideoReceiver::_makeSource() failed. Error with gst_element_factory_make('parsebin')"; + break; + } } if ((bin = gst_bin_new("sourcebin")) == nullptr) { diff --git a/src/VideoStreaming/VideoStreaming.cc b/src/VideoStreaming/VideoStreaming.cc index ba67d307686847805867a99f0d851e49f440b71d..556c63274016c76d822678c3df3acf490ea00b15 100644 --- a/src/VideoStreaming/VideoStreaming.cc +++ b/src/VideoStreaming/VideoStreaming.cc @@ -89,6 +89,7 @@ static void qt_gst_log(GstDebugCategory * category, GST_PLUGIN_STATIC_DECLARE(rtpmanager); GST_PLUGIN_STATIC_DECLARE(isomp4); GST_PLUGIN_STATIC_DECLARE(matroska); + GST_PLUGIN_STATIC_DECLARE(mpegtsdemux); GST_PLUGIN_STATIC_DECLARE(opengl); #if defined(__android__) GST_PLUGIN_STATIC_DECLARE(androidmedia); @@ -162,6 +163,7 @@ void initializeVideoStreaming(int &argc, char* argv[], int gstDebuglevel) GST_PLUGIN_STATIC_REGISTER(rtpmanager); GST_PLUGIN_STATIC_REGISTER(isomp4); GST_PLUGIN_STATIC_REGISTER(matroska); + GST_PLUGIN_STATIC_REGISTER(mpegtsdemux); GST_PLUGIN_STATIC_REGISTER(opengl); #if defined(__android__) diff --git a/src/VideoStreaming/VideoStreaming.pri b/src/VideoStreaming/VideoStreaming.pri index c25eaf5da562d773b7e9a8ed928313040979d681..ec0436259651012df7f60d92257d1c600af651f7 100644 --- a/src/VideoStreaming/VideoStreaming.pri +++ b/src/VideoStreaming/VideoStreaming.pri @@ -89,6 +89,7 @@ LinuxBuild { -lgstrtpmanager \ -lgstisomp4 \ -lgstmatroska \ + -lgstmpegtsdemux \ -lgstandroidmedia \ -lgstopengl @@ -102,7 +103,7 @@ LinuxBuild { -lgstreamer-1.0 -lgstrtp-1.0 -lgstpbutils-1.0 -lgstrtsp-1.0 -lgsttag-1.0 \ -lgstvideo-1.0 -lavformat -lavcodec -lavutil -lx264 -lavfilter -lswresample \ -lgstriff-1.0 -lgstcontroller-1.0 -lgstapp-1.0 \ - -lgstsdp-1.0 -lbz2 -lgobject-2.0 \ + -lgstsdp-1.0 -lbz2 -lgobject-2.0 -lgstmpegts-1.0 \ -Wl,--export-dynamic -lgmodule-2.0 -pthread -lglib-2.0 -lorc-0.4 -liconv -lffi -lintl \ INCLUDEPATH += \