我正在开发一个使用 gstreamer 播放 H264 转储的应用程序
管道是:
appsrc - h264parse - ffdec_h264 - ffmpegcolorspace - deinterlace - autovideosink
数据流是 :: PULL 模式来自
appsrc
{ 使用信号:need-data
}
我想使用应用程序中的PUSH模式验证相同的应用程序:在文档中提到:我们需要调用
push-buffer
信号并发送缓冲区
我的代码片段是:
gst_app_src_set_emit_signals(source, TRUE);
g_signal_connect (source, "push-buffer", G_CALLBACK (start_feed), source);
虽然管道已创建,但我没有收到任何回调:
start_feed()
谁能帮助我,appsrc
的
PUSH模式操作到底需要做什么。
根据文档:
使appsrc发出“new-preroll”和“new-buffer”信号。默认情况下禁用此选项,因为当应用程序更喜欢在拉模式下运行时,信号发射非常昂贵且不需要。
因此,您可以尝试添加“新缓冲区”信号。 “push-buffer”是一个动作,因此附加信号处理程序不会执行任何操作,因为它是您在有数据时应该调用的东西,而不是调用回调的东西。
根据您的
start_feed
的用途,您可能还在寻找“需要数据”信号(大概是管道需要更多数据时发出的信号)。