0

MyApp.c文件中的一些行

...
GstElement* video_decoder;
video_decoder = gst_element_factory_make ("ffdec_h264", "video_decoder_one");
assert(video_decoder);
...

当使用命令行 gcc 编译时,它编译/运行得非常好,

gcc -o app MyApp.c `pkg-config --cflags --libs gstreamer-0.10 gstreamer-app-0.10 `

现在我想使用 cmake(和其他人一样!),因此在尝试了 Stack Overflow 上给出的各种方法之后添加了一些花哨的线条...... pkg_check_modules()execute_process()等。所有这些都导致了一些错误,比如

错误:断言“video_decoder”失败

问题 1 -
这里可能是什么问题,我包含/链接的方式与 gcc 编译命令相同?

所以,我试图检查ffdec_h264实际在哪里以及从哪里正常 gcc 编译命令会选择它

$ gst-inspect-0.10 ffdec_h264

导致

插件详情:

      Name:           ffmpeg     
      Description:    All FFmpeg codecs and formats (local snapshot)  
      Filename:       /usr/lib/gstreamer-0.10/libgstffmpeg.so     
      Version:        0.10.12  
      License:        LGPL  
      Source module:  gst-ffmpeg   
      Binary package: FFmpeg    
      Origin URL:     http://ffmpeg.org/

该元素存在于/usr/lib/gstreamer-0.10/libgstffmpeg.so

我试图确认,因此pkg-config --cflags --libs gstreamer-0.10 gstreamer-app-0.10在命令行上运行并得到

-pthread -I/usr/local/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/libxml2 -pthread -L/usr/local/lib -lgstapp-0.10 -lgstbase-0.10 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lxml2 -lglib-2.0

问题 2 -(优先级较低)我没有看到 gstffmpeg 共享对象从上面的 pk-config 链接,仍然使用 gcc 进行编译并且代码运行良好。如何 ?

但是,使用 cmake 进行相同的编译/运行似乎对我不起作用。

除了普通的东西,我在 CMakeLists.txt 中也有以下行

find_library(GST_FFMPEG_LIBRARIES NAMES gstffmpeg PATHS /usr/lib/gstreamer-0.10/)

然后链接它,参考find_library()

问题 3-
现在我已经链接了存在 ffdec_h264 的确切 .so 名称,为什么它会给出相同的 element not found 错误。你能告诉我一些调试选项来挖掘更多或者这里可能有什么问题吗?

4

0 回答 0