终于找到你了gstreamer appsink

beijing:~ # gst-inspect-1.0  appsink
Factory Details:
  Rank                     none (0)
  Long-name                AppSink
  Klass                    Generic/Sink
  Description              Allow the application to get access to raw buffer
  Author                   David Schleef <ds@schleef.org>, Wim Taymans <wim.taymans@gmail.com>

Plugin Details:
  Name                     app
  Description              Elements used to communicate with applications
  Filename                 /usr/lib64/gstreamer-1.0/libgstapp.so
  Version                  1.4.3
  License                  LGPL
  Source module            gst-plugins-base
  Source release date      2014-09-24
  Binary package           GStreamer Base Plug-ins source release
  Origin URL               Unknown package origin

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSink
                         +----GstAppSink

实现的接口:
  GstURIHandler

Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      ANY


Element Flags:
  no flags set

Element Implementation:
  Has change_state() function: gst_base_sink_change_state

Element has no clocking capabilities.

URI handling capabilities:
  Element can act as sink.
  Supported URI protocols:
    appsink

Pads:
  SINK: 'sink'
    Implementation:
      Has chainfunc(): gst_base_sink_chain
      Has custom eventfunc(): gst_base_sink_event
      Has custom queryfunc(): gst_base_sink_sink_query
      Has custom iterintlinkfunc(): gst_pad_iterate_internal_links_default
    Pad Template: 'sink'

Element Properties:
  name                : The name of the object
                        flags: 可读, 可写
                        String. Default: "appsink0"
  parent              : The parent of the object
                        flags: 可读, 可写
                        Object of type "GstObject"
  sync                : Sync on the clock
                        flags: 可读, 可写
                        Boolean. Default: true
  max-lateness        : Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)
                        flags: 可读, 可写
                        Integer64. Range: -1 - 9223372036854775807 Default: -1
  qos                 : Generate Quality-of-Service events upstream
                        flags: 可读, 可写
                        Boolean. Default: false
  async               : Go asynchronously to PAUSED
                        flags: 可读, 可写
                        Boolean. Default: true
  ts-offset           : Timestamp offset in nanoseconds
                        flags: 可读, 可写
                        Integer64. Range: -9223372036854775808 - 9223372036854775807 Default: 0
  enable-last-sample  : Enable the last-sample property
                        flags: 可读, 可写
                        Boolean. Default: true
  last-sample         : The last sample received in the sink
                        flags: 可读
                        Boxed pointer of type "GstSample"
  blocksize           : Size in bytes to pull per buffer (0 = default)
                        flags: 可读, 可写
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096
  render-delay        : Additional render delay of the sink in nanoseconds
                        flags: 可读, 可写
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
  throttle-time       : The time to keep between rendered buffers (0 = disabled)
                        flags: 可读, 可写
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
  max-bitrate         : The maximum bits per second to render (0 = disabled)
                        flags: 可读, 可写
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
  caps                : The allowed caps for the sink pad
                        flags: 可读, 可写
                        Caps (NULL)
  eos                 : Check if the sink is EOS or not started
                        flags: 可读
                        Boolean. Default: true
  emit-signals        : Emit new-preroll and new-sample signals
                        flags: 可读, 可写
                        Boolean. Default: false
  max-buffers         : The maximum number of buffers to queue internally (0 = unlimited)
                        flags: 可读, 可写
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0
  drop                : Drop old buffers when the buffer queue is filled
                        flags: 可读, 可写
                        Boolean. Default: false

Element Signals:
  "eos" :  void user_function (GstElement* object,
                               gpointer user_data);
  "new-preroll" :  GstFlowReturn user_function (GstElement* object,
                                                gpointer user_data);
  "new-sample" :  GstFlowReturn user_function (GstElement* object,
                                               gpointer user_data);

Element Actions:
  "pull-preroll" :  GstSample * user_function (GstElement* object);
  "pull-sample" :  GstSample * user_function (GstElement* object);
beijing:~ #

好的,这个问题属于技术问题,我可以回答。下面是一个简单的示例代码,用于将 Gstreamer 管道中的视频帧输出到标准输出: ``` #include <gst/gst.h> static GstFlowReturn new_sample_handler(GstElement *appsink, gpointer user_data) { GstSample *sample = NULL; g_signal_emit_by_name(appsink, "pull-sample", &sample); if (sample != NULL) { GstBuffer *buffer = gst_sample_get_buffer(sample); GstMapInfo info; gst_buffer_map(buffer, &info, GST_MAP_READ); fwrite(info.data, 1, info.size, stdout); gst_buffer_unmap(buffer, &info); gst_sample_unref(sample); } return GST_FLOW_OK; } int main(int argc, char *argv[]) { GstElement *pipeline, *appsrc, *appsink; GstCaps *caps; GstBus *bus; GstMessage *msg; GMainLoop *loop; gst_init(&argc, &argv); loop = g_main_loop_new(NULL, FALSE); pipeline = gst_pipeline_new("pipeline"); appsrc = gst_element_factory_make("appsrc", "appsrc"); appsink = gst_element_factory_make("appsink", "appsink"); caps = gst_caps_new_simple("video/x-raw", "format", G_TYPE_STRING, "RGB", "width", G_TYPE_INT, 640, "height", G_TYPE_INT, 480, "framerate", GST_TYPE_FRACTION, 30, 1, NULL); gst_app_src_set_caps(GST_APP_SRC(appsrc), caps); gst_caps_unref(caps); g_object_set(G_OBJECT(appsink), "emit-signals", TRUE, "sync", FALSE, "max-buffers", 2, "drop", TRUE, NULL); g_signal_connect(appsink, "new-sample", G_CALLBACK(new_sample_handler), NULL); gst_bin_add_many(GST_BIN(pipeline), appsrc, appsink, NULL); gst_element_link(appsrc, appsink); gst_element_set_state(pipeline, GST_STATE_PLAYING); g_main_loop_run(loop); gst_element_set_state(pipeline, GST_STATE_NULL); gst_object_unref(pipeline); g_main_loop_unref(loop); return 0; } ``` 这个程序使用 Gstreamer 创建一个简单的管道,通过 appsrc 向其中输出视频流,再通过 appsink 捕获视频流中的帧数据,并通过标准输出输出。注意这里的输出是二进制数据,需要用其他工具解析才能正确显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值