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 错误。你能告诉我一些调试选项来挖掘更多或者这里可能有什么问题吗?