2013-08-01 42 views
-1

我是GStreamer编程的初学者。在GStreamer中使用Standard .so文件

我创建了一个在文件中播放媒体的管道。 我想用libogg.so来解码ogg格式文件,而不是libgstogg.so

如何在我的管道中使用此解码器?

回答

0

大家是初学者GStreamer的编程似乎:)

你将不得不编写一个程序,可能是C程序,并将其链接对libogg.so而非libgstogg.so

可以实现以上容易使用cmake

要确认什么LIB程序钦点为链接,

  1. 您可以尝试重新命名libgstogg或
  2. 运行strace,看看哪个位置二进制拿起文件
  3. 创建程序的共享库和运行ldd
0

你似乎错过这里的一些基本概念:

  • 的GStreamer是构建媒体的框架管道元件

  • 元素通过插件系统定义。插件,文件共享对象(的.so)文件

  • 不能使用只是任何共享对象作为一个插件(GStreamer的不会承认例如libc.so作为一个插件 - 仅仅是因为libc.so不提供的GStreamer插件)

所以在你的特殊情况下,你想libogg.so交换libgstogg.so

now libgstogg.so是一个共享对象,它提供了gstreamer插件的ogg系列。另一侧的 libogg.so是与gstreamer无关的ogg muxer/demuxer的实现。

如果你想使用libogg.so你将不得不创建自己的gstreamer插件,使用libogg.so。检查documentation如何做到这一点。

在这样做之前,请检查libgstogg.so实际上做了什么。你会崩溃,它提供了一个gstreamer插件,使用libogg.so来做实际的muxing/demuxing。它真的只是你正在寻找的桥梁:

$ ldd /usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstogg.so | grep ogg 
libogg.so.0 => /usr/lib/x86_64-linux-gnu/libogg.so.0 (0x00007fc3f9ae7000)