1

我有管道:

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. 莫夫
  2. 一些数据
  3. MOOF
  4. MDAT
  5. MOOF
  6. MDAT

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

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

可以使用 multifilesink 不正确吗?

4

2 回答 2

2

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

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

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

更新

看起来在提出问题的时候没有像这样的元素splitmuxsink

于 2015-12-25T21:03:43.890 回答
0

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

尝试用“videotestsrc num-buffers=!x264enc!mp4mux ...”替换您的h264接收和卸载

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

另外,你想怎么玩?

谢谢

于 2014-01-20T23:12:20.547 回答