GStreamer 的 AppSrc 中缺少帧和流结束事件

问题描述 投票:0回答:1

当关闭从 appsrc 读取帧、对其进行编码并将其写入文件的 GStreamer 管道时,我注意到虽然我已将

N
缓冲区推入 appsrc,但该文件只有
N-1
帧50% 的时间(其余时间是
N
)。

我在 Ubuntu 上使用 GStreamer 1.14.5,我尝试使用以下两种方式发送 EOS 动作信号:

self._pipeline.send_event(Gst.Event.new_eos())
# and
self._appsrc.send_event(Gst.Event.new_eos())
python gstreamer python-gstreamer
1个回答
0
投票

我能够通过调用 appsrc 方法

end_of_stream
而不是发出动作信号来解决我的问题。 文档说这两种方法中的任何一种都应该有效,所以我认为 GStreamer 1.14.5 中存在/曾经存在一个错误,导致在 EOS 沿着管道传播之前最后一个缓冲区没有被推送到输出板。

TLDR:将

self._appsrc.send_event(Gst.Event.new_eos())
替换为
self._appsrc.end_of_stream()
.

© www.soinside.com 2019 - 2024. All rights reserved.