GStreamer 拆分 MP4 文件
GStreamer splitting MP4 file
我正在尝试编写一个简单的管道,以将本地存储上的 mp4 文件拆分为具有固定持续时间的多个块我一直在尝试使用几种不同的选项,但 none 似乎有效
顺便说一句,由于一些许可问题,我们有一个不使用 FFmpeg 库的硬性要求,所以我目前拥有的插件是
gst-plugins-base-1.8.3
gst-plugins-good-1.8.3
and some bad plugins libs (h264parse, mpegtsmux, hlssink)
你能帮我用 GStreamer 解决这个问题吗?
我试过的几个样本
gst-launch-1.0 filesrc location=/tmp/sample/BigBuckBunny_175k.mp4 ! h264parse ! splitmuxsink location=/tmp/sample/segments/segment%05d.mp4 max-size-time=10000000000
gst-launch-1.0 filesrc location=/tmp/sample/BigBuckBunny_175k.mp4 ! splitmuxsink location=/tmp/sample/segments/segment%05d.mp4 max-size-time=10000000000
gst-launch-1.0 filesrc location=/tmp/sample/BigBuckBunny_175k.mp4 ! decodebin ! videoconvert ! x264enc ! splitmuxsink location=/tmp/sample/segments/segment%05d.mp4 max-size-time=10000000000
请考虑使用splitmuxsink
MP4文件分割结果流水线如下图(包括video/audio个流)
gst-launch-1.0 -e filesrc location={from} ! queue ! qtdemux name=demux demux.video_0 ! queue ! h264parse ! queue ! mux.video \
demux.audio_0 ! queue ! aacparse ! queue ! mux.audio_0 splitmuxsink location={to} max-size-time={duration} muxer=mp4mux name=mux
我正在尝试编写一个简单的管道,以将本地存储上的 mp4 文件拆分为具有固定持续时间的多个块我一直在尝试使用几种不同的选项,但 none 似乎有效
顺便说一句,由于一些许可问题,我们有一个不使用 FFmpeg 库的硬性要求,所以我目前拥有的插件是
gst-plugins-base-1.8.3
gst-plugins-good-1.8.3
and some bad plugins libs (h264parse, mpegtsmux, hlssink)
你能帮我用 GStreamer 解决这个问题吗?
我试过的几个样本
gst-launch-1.0 filesrc location=/tmp/sample/BigBuckBunny_175k.mp4 ! h264parse ! splitmuxsink location=/tmp/sample/segments/segment%05d.mp4 max-size-time=10000000000
gst-launch-1.0 filesrc location=/tmp/sample/BigBuckBunny_175k.mp4 ! splitmuxsink location=/tmp/sample/segments/segment%05d.mp4 max-size-time=10000000000
gst-launch-1.0 filesrc location=/tmp/sample/BigBuckBunny_175k.mp4 ! decodebin ! videoconvert ! x264enc ! splitmuxsink location=/tmp/sample/segments/segment%05d.mp4 max-size-time=10000000000
请考虑使用splitmuxsink
MP4文件分割结果流水线如下图(包括video/audio个流)
gst-launch-1.0 -e filesrc location={from} ! queue ! qtdemux name=demux demux.video_0 ! queue ! h264parse ! queue ! mux.video \
demux.audio_0 ! queue ! aacparse ! queue ! mux.audio_0 splitmuxsink location={to} max-size-time={duration} muxer=mp4mux name=mux