【发布时间】:2017-09-01 03:54:39
【问题描述】:
我创建了管道gst_parse_launch("rtspsrc location=rtsp://192.168.0.77:554/user=admin_password_=tlJwpbo6_channel=1_stream=0.sdp?real_stream ! queue !rtph264depay ! h264parse ! splitmuxsink muxer=\"mp4mux name=muxer\" max-size-bytes=20000000 location=/storage/emulated/0/DVR/CameraX/the_file_%d.mp4",NULL);,它适用于 Gstreamer 1.9.1 版。出于其他一些原因,我想使用较新的版本,但是对于上述版本 1.10.X 和 1.11.X 管道在工作了几秒钟到几分钟之间的不确定时间后停止。 Logcat 输出在这里:
gstqtmux.c:3391:gst_qt_mux_add_buffer: 错误:缓冲区没有 PTS。
W/GStreamer+basesrc: 0:01:06.383504349 0xb9380000 gstbasesrc.c:2950:gst_base_src_loop: 错误:内部数据流错误。
W/GStreamer+basesrc: 0:01:06.383623672 0xb9380000 gstbasesrc.c:2950:gst_base_src_loop: 错误:流停止,原因错误 (-5)
我尝试了不同的相机型号。我删除了 splitmuxsink 并尝试使用 mp4mux 但结果没有改变。我更改了 mp4mux 的“演示时间”属性,但没有任何变化。
【问题讨论】:
-
我在这里发布了 Buffer has No PTS issue 的详细答案和解决方法,这消除了 GStreamer 的 mp4mux 责任,并利用 GPac 进行该操作。这对您来说可能是一个可行的解决方法。要点是从您的管道中删除
mp4mux阶段,并在 Gpac 的 MP4box 中完成这些操作。适用于静态文件,可能对您的流应用程序没有那么有前途stackoverflow.com/questions/45455279/…
标签: android gstreamer pipeline rtsp