GStreamer上“黑名单”的含义是什么?

问题描述 投票:6回答:3

我正在尝试交叉编译GStreamer。版本是1.2.3。主机PC的操作系统是x86 linux,而目标系统的操作系统是MIPSEL linux操作系统。

我成功编译了目标设备的gstreamer和插件。并且gst-launch-1.0可以执行。所以我尝试使用基本插件libgstvideotestsrc。但它没有用。所以我运行```gst-inspect-1.0'来检查插件,然后我发现结果如下。

# gst-inspect-1.0 -b
Blacklisted files:
  libgstinterlace.so
  libgstfbdevsink.so
  libgstgeometrictransform.so
  libgstmultifile.so
  libgstencodebin.so
  libgstfestival.so
  libgstlevel.so
  libgstdvdspu.so
  libgstauparse.so
  libgsty4menc.so
  libgstvideofilter.so
  libgstvideoscale.so
  libgstaccurip.so
  libgstvideoconvert.so
  libgstaudioparsers.so
  libgsttcp.so
  libgstvolume.so
  libgstcoreelements.so
  libgstmpegtsdemux.so
  libgstid3tag.so
  libgstadpcmdec.so
  libgstmfc.so
  libgstrtpmanager.so
  libgstaudiotestsrc.so
  libgstdeinterlace.so
  libgstdebug.so
  libgstplayback.so
  libgstspeed.so
  libgstasfmux.so
  libgsticydemux.so
  libgstmpegpsdemux.so
  libgstalaw.so
  libgstwavparse.so
  libgstpnm.so
  libgstnavigationtest.so
  libgstcamerabin2.so
  libgstsdpelem.so
  libgstisomp4.so
  libgstliveadder.so
  libgstmpegtsmux.so
  libgstautodetect.so
  libgstmultipart.so
  libgstvideofiltersbad.so
  libgstaudioresample.so
  libgstautoconvert.so
  libgstdvbsuboverlay.so
  libgstid3demux.so
  libgstvideobox.so
  libgstgio.so
  libgstdtmf.so
  libgstremovesilence.so
  libgstreplaygain.so
  libgstaudioconvert.so
  libgstcutter.so
  libgstgaudieffects.so
  libgstdvb.so
  libgstaudiovisualizers.so
  libgstudp.so
  libgstimagefreeze.so
  libgstadder.so
  libgstpcapparse.so
  libgstmxf.so
  libgstshapewipe.so
  libgstgdp.so
  libgstwavenc.so
  libgstshm.so
  libgstflv.so
  libgstfreeverb.so
  libgstoss4audio.so
  libgstsubenc.so
  libgstaudiorate.so
  libgstinter.so
  libgsttypefindfunctions.so
  libgstvideorate.so
  libgstrtp.so
  libgstcoloreffects.so
  libgstmpegpsmux.so
  libgstivtc.so
  libgstjpegformat.so
  libgstsmpte.so
  libgstalphacolor.so
  libgstsubparse.so
  libgstaudiofxbad.so
  libgstvideomixer.so
  libgstmulaw.so
  libgstdebugutilsbad.so
  libgsteffectv.so
  libgstfieldanalysis.so
  libgstadpcmenc.so
  libgstrawparse.so
  libgstavi.so
  libgstdataurisrc.so
  libgstapetag.so
  libgstinterleave.so
  libgstmidi.so
  libgstrtsp.so
  libgstapp.so
  libgstalpha.so
  libgstaudiofx.so
  libgstvideocrop.so
  libgstvideotestsrc.so
  libgstspectrum.so
  libgstbayer.so
  libgstaiff.so
  libgstsegmentclip.so
  libgstfrei0r.so

Total count: 106 blacklisted files

我想知道“列入黑名单”的含义以及我应该如何解决这个问题。如果您需要多个信息来解决此问题,请与我们联系。

这是我为GStreamer构建的配置。

#PACKAGES: Name + version
export GST_PLUGIN_BASE="gst-plugins-base-1.2.3"
export GST_PLUGIN_GOOD="gst-plugins-good-1.2.3"
export GST_PLUGIN_BAD="gst-plugins-bad-1.2.3"


#HOST & Build configuration.
export HOST="mips-linux-gnu"
export BUILD="i686-pc-linux-gnu"


#Set path for file system.
export BUILD_PATH="~~~~~"
export ROOTFS_PATH="${BUILD_PATH}/rootfs"
export MIPS_LIB="~~~"
export INSTALL_PATH="${ROOTFS_PATH}/usr"
export INSTALL_PATH_LIB="${ROOTFS_PATH}/usr/lib"

#Compiler options
export PATH="${PATH}:${INSTALL_PATH}/bin"
export CFLAGS="-I${ROOTFS_PATH}/usr/include  -I${ROOTFS_PATH}/usr/include/glib-2.0 -I${ROOTFS_PATH}/usr/lib/glib-2.0/include -I${ROOTFS_PATH}/usr/include/gstreamer-1.0 -I${ROOTFS_PATH}/usr/include/gio-unix-2.0 -mno-compact-eh -EL"   
export CPPFLAGS="-I${ROOTFS_PATH}/usr/include  -I${ROOTFS_PATH}/usr/include/glib-2.0 -I${ROOTFS_PATH}/usr/lib/glib-2.0/include -I${ROOTFS_PATH}/usr/include/gstreamer-1.0 -I${ROOTFS_PATH}/usr/include/gio-unix-2.0 -mno-compact-eh -EL"
export CXXFLAGS=$CPPFLAGS
export GST_CHECK_CFLAGS="-I${ROOTFS_PATH}/usr/include -I${ROOTFS_PATH}/usr/include/glib-2.0/include" 
export PKG_CONFIG="/usr/bin/pkg-config" 
export PKG_CONFIG_PATH="${PATH}:${ROOTFS_PATH}/lib/pkgconfig/:${ROOTFS_PATH}/usr/lib/pkgconfig/:${ROOTFS_PATH}/usr/local/lib/pkgconfig/:/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/lib/pkgconfig"
export LD_LIBRARY_PATH="/lib:/usr/local/lib"
export CC="~~~mips-linux-gnu-gcc -EL"
export CXX="~~~mips-linux-gnu-g++ -EL"



cd ${BUILD_PATH}


#GStreamer 1.2.3
#http://greenday96.egloos.com/viewer/4627046
wget http://gstreamer.freedesktop.org/src/gstreamer/$GSTREAMER.tar.xz
tar xf $GSTREAMER.tar.xz
cd $GSTREAMER
./configure --prefix=$INSTALL_PATH --build=$BUILD  --host=$HOST  --disable-nls --disable-static 
sudo make 
sudo make install 
cd ..

#gst-plugin-base 1.2.3 
wget http://gstreamer.freedesktop.org/src/gst-plugins-base/$GST_PLUGIN_BASE.tar.xz
tar xf $GST_PLUGIN_BASE.tar.xz
cd $GST_PLUGIN_BASE
./configure --prefix=$INSTALL_PATH --build=$BUILD  --host=$HOST  --disable-nls --disable-static --disable-examples --disable-pango
sudo make 
sudo make install 
cd ..


# gst-plugin-good-1.2.3 
# http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.2.3.tar.xz
wget http://gstreamer.freedesktop.org/src/gst-plugins-good/$GST_PLUGIN_GOOD.tar.xz
tar xf $GST_PLUGIN_GOOD.tar.xz
cd $GST_PLUGIN_GOOD
./configure --prefix=$INSTALL_PATH --build=$BUILD  --host=$HOST  --disable-nls --disable-static --disable-valgrind --disable-equalizer --disable-flx --disable-goom --disable-goom2k1 --disable-matroska --disable-monoscope  --disable-oss  --disable-cairo  --disable-gdk_pixbuf   --disable-soup  --disable-libpng --disable-gst_v4l2
sudo make 
sudo make install 
cd ..


# gst-plugin-bad-1.2.3 
# http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.2.3.tar.xz
wget http://gstreamer.freedesktop.org/src/gst-plugins-bad/$GST_PLUGIN_BAD.tar.xz
tar xf $GST_PLUGIN_BAD.tar.xz
cd $GST_PLUGIN_BAD
./configure --prefix=$INSTALL_PATH --build=$BUILD  --host=$HOST  --disable-nls --disable-static   --disable-y4m --disable-siren --disable-librfb  --disable-yadif --disable-smooth --disable-videoparsers --disable-decklink --disable-valgrind --disable-directfb --disable-examples 
sudo make 
sudo make install 
cd ..
linux plugins mips cross-compiling gstreamer
3个回答
5
投票

如果你想知道为什么这些插件被列入黑名单,你可以删除“registry.dat”(运行locate查找其位置),然后重新运行gst-inspect,再次检查插件以及将它们列入黑名单的原因应该打印。

他们被列入黑名单可能有几个原因,如果你这样做,你应该找到它们。

或者,您也可以运行gst-inspect location_of_the_dynamic_library.so


1
投票

我找到了原因。它是GLIB,而不是GStreamer。

要为mipsel构建GLIB,我应该设置glib_cv_uscore=no。这取决于您的嵌入式设备。因此,请检查目标硬件的CPU规格。所以我为GLIB制作了如下的构建脚本。

#Glib 2.42.1
wget ftp://ftp.gnome.org/pub/gnome/sources/glib/2.42/$GLIB.tar.xz
tar xf $GLIB.tar.xz 
cd $GLIB

#Build for MIPS
echo "ac_cv_func_posix_getgrgid_r=yes" >  mips.cache
echo "ac_cv_func_posix_getpwuid_r=yes" >>  mips.cache
echo "glib_cv_stack_grows=no" >> mips.cache
echo "glib_cv_uscore=no" >>mips.cache
./configure --prefix=$INSTALL_PATH --host=$HOST  --cache-file=mips.cache --build=$BUILD 
make
make install 
cd ..

我从here得到了线索。


1
投票

对于gstreamer 1.8 gst-inspect-1.0需要使用额外的GST_DEBUG = 4 env var进行启动以查看详细原因(在我的情况下不兼容的版本):

GST_DEBUG=4 gst-inspect-1.0  /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgst_some_plugin.so
...15-20 lines with non-interesting details...

0:00:00.035553207  4287     0x29f93c00 WARN      GST_PLUGIN_LOADING gstplugin.c:485:gst_plugin_register_func: plugin "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgst_some_plugin.so" has incompatible version (plugin: 1.10, gst: 1,8), not loading
Could not load plugin file: File "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgst_some_plugin.so" appears to be a GStreamer plugin, but it failed to initialize
© www.soinside.com 2019 - 2024. All rights reserved.