0

我正在开发一个使用 gstreamer 播放 H264 转储的应用程序

管道是:appsrc - h264parse - ffdec_h264 - ffmpegcolorspace - deinterlace - autovideosink

数据流是:: PULL Mode from appsrc { 使用信号:need-data}

我想从应用程序中使用 PUSH 模式验证相同的应用程序:在文档中提到:我们需要调用“推送缓冲区”信号并发送缓冲区

我的代码片段是:

gst_app_src_set_emit_signals(source, TRUE);
g_signal_connect (source, "push-buffer", G_CALLBACK (start_feed), source);

尽管创建了管道,但我没有收到任何回调:start_feed()

谁能帮助我,对于appsrc的'PUSH'模式操作到底需要做什么。

4

1 回答 1

1

根据文档

让appsrc 发出“new-preroll”和“new-buffer”信号。默认情况下禁用此选项,因为当应用程序更喜欢在拉模式下运行时,信号发射很昂贵且不需要。

因此,您可以尝试添加“新缓冲区”信号。“push-buffer”是一个动作,所以附加一个信号处理程序不会做任何事情,因为它是你应该在有数据时调用的东西,而不是调用回调的东西。

根据您的start_feed工作,您可能还在寻找“需要数据”信号(大概是管道需要更多数据时的信号)。

于 2013-04-09T16:52:29.130 回答