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

Jin*_*Yoo 9 linux plugins mips cross-compiling gstreamer

我正在尝试交叉编译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
Run Code Online (Sandbox Code Playgroud)

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

这是我为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 ..
Run Code Online (Sandbox Code Playgroud)

Mat*_*_Du 6

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

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

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

  • 它是``/ root/.cache/gstreamer-1.0/registry.mips.bin```.我正在检查这个文件.非常感谢您的回复. (3认同)

Vas*_*kin 6

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

GST_DEBUG=4 gst-inspect-1.0  /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgst_some_plugin.so
Run Code Online (Sandbox Code Playgroud)
...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
Run Code Online (Sandbox Code Playgroud)


Łuk*_*ron 1

就我而言,它被列入黑名单,因为我构建了 kvssink ,它依赖于其他库。GStreamer 没有找到它们。

事情就是这样:

gst-inspect-1.0 kvssink

(gst-plugin-scanner:22): GStreamer-WARNING **: 13:07:28.097: Failed to load plugin '/root/bin/producer/libgstkvssink.so': libproducer.so: cannot open shared object file: No such file or directory
(gst-plugin-scanner:22): GStreamer-WARNING **: 13:07:28.204: Failed to load plugin '/root/bin/producer/libproducer.so': libcproducer.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

为了确认库问题,我使用了 ldd

ldd libgstkvssink.so
Run Code Online (Sandbox Code Playgroud)

它将列出所有可能在系统中找到的路径的依赖项。找不到我的库 libc Producer.so 和 libc Producer.so 。

基于为其他可见库打印的路径

    linux-vdso.so.1 (0x00007ffc3c1a6000)
libgstreamer-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0 (0x00007f064d24d000)
Run Code Online (Sandbox Code Playgroud)

我刚刚将丢失的库复制到 /usr/lib/x86_64-linux-gnu/ 在我的例子中是:

cp libcproducer.so  /usr/lib/x86_64-linux-gnu/
cp libproducer.so /usr/lib/x86_64-linux-gnu/
Run Code Online (Sandbox Code Playgroud)

然后:

gst-inspect-1.0 kvssink
Run Code Online (Sandbox Code Playgroud)

打印插件详细信息。

由于此线程中的信息,我已经解决了这个问题: Linking against externallibraries in gstreamer plugin using autotools