我试图实施预录 我使用20秒的共享内存作为循环缓冲区。 我使用共享内存作为循环缓冲区来永久录制视频。 当事件发生时,我想将整个缓冲区写入文件,然后将视频录制40秒。
如何立即对共享内存中的视频进行编码并写入文件,然后继续从内存写入文件一段时间?
答案 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