GStreamer预录

时间:2018-06-07 07:32:07

标签: gstreamer

我试图实施预录 我使用20秒的共享内存作为循环缓冲区。 我使用共享内存作为循环缓冲区来永久录制视频。 当事件发生时,我想将整个缓冲区写入文件,然后将视频录制40秒。

如何立即对共享内存中的视频进行编码并写入文件,然后继续从内存写入文件一段时间?

1 个答案:

答案 0 :(得分:0)

你可以让gstreamer队列按照以下方式进行预缓冲:

gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_BLOCK,
                   (GstPadProbeCallback) callback, NULL, NULL);

在队列的垫上安装回调:

appsrc-- > queue --> encode --> mux --> filesink

每当你不想要传递时,缓冲区在回调中返回GST_PAD_PROBE_DROP,当你想传递缓冲区时返回GST_PAD_PROBE_PASS

管道如下:

    SELECT (si.TotalBill-siph.PaidAmount)as RemainingAmount from 
    SupplyInvoicePaymentHistory siph inner join SupplyInvoice si on 
    siph.SupplyInvoiceID=si.SupplyInvoiceID