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