Gstreamer 使用补丁保存视频

Gstreamer 使用补丁保存视频

有谁知道流处理器命令保存网络摄像头视频补丁基于MB大小

我需要录制网络摄像头视频,并在其大小达到 100mb 时将其保存为单独的文件。

提前致谢。

答案1

您可能正在寻找具有 multifilesink 或甚至 hlssink 的管道,它们可以为您生成这些文件。

multifilesink 可以满足您的要求,但可能对关键帧不够重视,因此文件的开头可能无法播放,如果从该片段开始播放,您将丢失一些素材。hlssink 应该可以处理这个问题,但它的工作基础是时间,而不是文件大小。您可以更新 multifilesink 以更多地关注关键帧,或者让 hlssink 具有基于文件大小而不是持续时间进行片段处理的选项,以满足您的特定用例。

无论如何,这里有一些示例管道可以帮助您入门(不确定您的输入是什么或您的编码/解码需求是什么):

gst-launch-1.0 -e videotestsrc num-buffers=100000 is-live=true ! x264enc ! mpegtsmux ! multifilesink max-file-size=100000000 next-file=4 location=%05d.ts

gst-launch-1.0 -e videotestsrc num-buffers=100000 is-live=true ! x264enc ! mpegtsmux ! hlssink target-duration=60 location=%05d.ts

您可以从这些开始,然后将源更改为您用于网络摄像头的任何格式。您可能能够将网络摄像头格式直接输出到多路复用器,或者您可能需要转码。只需确保使用流媒体容器格式,例如 mpeg2ts。

这是对最终管道外观的猜测,请随意更改编码器:

gst-launch-1.0 autovideosrc ! queue ! decodebin ! queue ! videoconvert ! x264enc ! mpegtsmux ! multifilesink max-file-size=100000000 next-file=4 location=%05d.ts

如果您还需要音频,则需要添加第二个分支:

gst-launch-1.0 autovideosrc ! queue ! decodebin ! queue ! videoconvert ! x264enc ! mpegtsmux name=m ! multifilesink max-file-size=100000000 next-file=4 location=%05d.ts autoaudiosrc ! queue ! avenc_mp2 ! m.

相关内容