首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gstreamer -将命令行gst-launch转换为C代码

Gstreamer -将命令行gst-launch转换为C代码
EN

Stack Overflow用户
提问于 2011-07-27 05:34:59
回答 3查看 8.5K关注 0票数 9

我已经通过使用gst-launch实用程序对GStreamer进行了一些实验。但是,最终的目标是使用GStreamer库在我自己的应用程序上实现相同的功能。

问题在于,要将我在命令行上测试的内容“移植”到C/C++代码中是很困难的(至少对于不习惯GStreamer应用程序接口的人来说是这样)。

我可能需要移植的命令示例如下:

代码语言:javascript
复制
gst-launch filesrc location="CLIP8.mp4" ! decodebin2 ! jpegenc ! multifilesink location="test%d.jpg"

什么是最“直接”的方式/方法来接受这样的命令并在我自己的应用程序上用C编写它。

此外,作为一个次要问题,我如何才能将多文件链接替换为在内存上执行此工作的可能性(我正在使用OpenCV对应该从视频中提取的给定图像执行一些计算)。是否可以直接解码到内存中并立即使用它,而无需首先保存到文件系统?它可以(也应该)是连续的,我的意思是,只有在我处理完当前帧之后,它才会移动到下一帧,这样我就不必在内存中保留数千帧。

你说呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-31 00:26:27

我找到了解决方案。GStreamer中内置了一个函数,可以解析gst-launch参数并返回管道。该函数名为gst_parse_launch,文档记录在以下位置:http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstParse.html

我还没有测试过它,但是将在命令行上测试的代码转换成C/C++代码可能是最快的解决方案。

票数 14
EN

Stack Overflow用户

发布于 2011-07-27 06:07:47

您可以随时打开the source of gst-launch,获取解析出命令行并将其转换为GStreamer管道的部分内容。

这样,您只需将“命令行”作为字符串传递,该函数将为您返回一个完整的管道。

票数 3
EN

Stack Overflow用户

发布于 2011-12-23 03:41:15

顺便说一句,有一个有趣的GStreamer元素,它提供了一种将处理管道集成到(C/C++)应用程序中的好方法: appsink

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-appsink.html

使用这个,你基本上可以在一个大的C数组中从管道中检索帧,并对它们做任何你想做的事情。您设置了一个回调函数,该函数将在每次有新帧从管道线程中可用时激活...

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6836899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档