我是 GStreamer 编程的初学者。
我创建了一个用于在文件中播放媒体的管道。我想libogg.so
用于解码 ogg 格式文件而不是libgstogg.so
.
我如何在我的管道中使用这个解码器?
我是 GStreamer 编程的初学者。
我创建了一个用于在文件中播放媒体的管道。我想libogg.so
用于解码 ogg 格式文件而不是libgstogg.so
.
我如何在我的管道中使用这个解码器?
似乎每个人都是 gstreamer 编程的初学者 :)
您将不得不编写一个程序,可能是 C 程序并将其链接到 libogg.so 而不是 libgstogg.so
您可以使用轻松实现上述目标cmake
要确认程序选择用于链接的库,
strace
以查看二进制文件选择了哪个位置 ldd
您似乎在这里错过了一些基本概念:
gstreamer 是一个从元素构建媒体管道的框架
元素是通过插件系统定义的。插件文件是共享对象 (.so) 文件
您不能仅将任何共享对象用作插件(gstreamer 不会将其识别libc.so
为插件 - 仅仅是因为libc.so
不提供 gstreamer 插件)
所以在你的特殊情况下你想交换libgstogg.so
.libogg.so
nowlibgstogg.so
是一个共享对象,它提供ogg
gstreamer 插件系列。另一方面libogg.so
是与 gstreamer 无关的 ogg muxer/demuxer 的实现。
如果你想使用libogg.so
,你必须创建自己的 gstreamer-plugin 来使用libogg.so
. 检查有关如何执行此操作的文档。
在您这样做之前,请检查libgstogg.so
实际执行的操作。你会发现,它提供了一个 gstreamer 插件,用于libogg.so
执行实际的多路复用/解复用。它实际上只是您正在寻找的桥梁:
$ 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)