GStreamer中的分段mp4

时间:2014-01-20 15:46:03

标签: gstreamer mp4 mpeg-dash

我有管道:

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的结构时,看到一个有趣的错误:

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

    问题在于mp4mux和qtmux。在GStreamer 1.1.0和1.2.2上测试过。所有结果都是一样的。

    可以使用multifilesink不正确吗?

2 个答案:

答案 0 :(得分:2)

如果您查看multifilesink的文档,您会找到答案:

  

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

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

<强>更新

在问到问题的时候,似乎没有像splitmuxsink这样的元素

答案 1 :(得分:0)

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

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

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

另外,你是如何尝试的?

由于