Thoht Asked: 2019-04-25 23:05:41 +0800 CST2019-04-25 23:05:41 +0800 CST 2019-04-25 23:05:41 +0800 CST Gstreamer 以补丁形式保存视频 772 有谁知道gstreamer命令可以根据MB 大小将网络摄像头视频保存在补丁中。 我需要录制一个网络摄像头视频,并在达到 100mb 大小时将其另存为一个单独的文件。 提前致谢。 python gstreamer 1 个回答 Voted Best Answer thiagoss 2019-04-27T10:58:16+08:002019-04-27T10:58:16+08:00 您可能正在寻找带有 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.
您可能正在寻找带有 multifilesink 甚至 hlssink 的管道,它们可以为您生成这些文件。
multifilesink 做你想做的,但可能对关键帧粗心,所以文件的开头可能无法播放,如果你从那个片段开始,你会丢失一些镜头。hlssink 应该处理这个问题,但它是按时间工作的,而不是文件大小。您可以更新 multifilesink 以更多地关注关键帧,或者使 hlssink 具有根据文件大小而不是特定用例的持续时间进行分段的选项。
无论如何,这里有一些示例管道可以帮助您入门(不确定您的输入或编码/解码需求是什么):
您可以从这些开始并将源更改为您用于网络摄像头的任何内容。您可能能够将您的网络摄像头格式直接输出到多路复用器,或者您可能必须转码。只需确保使用流媒体容器格式,例如 mpeg2ts。
这是对最终管道的猜测,随意更改编码器:
如果您还需要音频,则需要向其添加第二个分支: