GStreamer中的分段mp4

问题描述 投票:1回答:2

我有管道:

gst-launch-1.0 rtspsrc location=rtsp://ip/cam ! rtph264depay ! h264parse ! mp4mux fragment-duration=10000 streamable=1 ! multifilesink next-file=2 location=file-%03d.mp4

第一部分打得很好,有些则不打。当我试图查看损坏的mp4的结构时,看到一个有趣的bug:

  1. MOOV
  2. 一些数据
  3. 紫色
  4. 帮助
  5. 紫色
  6. 帮助

“一些数据”中最有趣的事情。没有标题数据,它们只是存在。按块大小我认为它是MDAT。我找到块的大小并在它之前添加MDAT头。文件立即生效并播放。但是未知的作品无法播放,因为它之前没有MOOF标题。

问题出在mp4mux和qtmux。在GStreamer 1.1.0和1.2.2上测试过。所有结果都是相同的。

可以使用multifilesink不正确吗?

gstreamer mp4 mpeg-dash
2个回答
2
投票

如果你看一下multifilesink的文档,你会找到答案:

无法使用此元素创建可独立播放的mp4文件,请使用splitmuxsink元素。 ...

所以使用splitmuxsink并且在完成最后一个文件的纠正时不要忘记发送EOS

更新

看起来当问题被问到没有像splitmuxsink这样的元素时


0
投票

可以使用videotestsrc而不是rtsp来复制吗?

尝试用“videotestsrc num-buffers =!x264enc!mp4mux ...”替换你的h264接收和depayloading。

这可能是一个错误,请在https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer上提交,以便得到维护人员的适当关注。

另外,你是如何尝试的呢?

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.