我创建了管道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: error:内部数据流错误。 W/GStreamer+basesrc: 0:01:06.383623672 0xb9380000 gstbasesrc.c:2950:gst_base_src_loop:错误:停止流,原因错误(-5)
我试过不同的相机型号。我删除了Splitmux接收器,并尝试使用mp4mux,但是结果没有改变。我更改了mp4mux的“演示-时间”属性,但是没有什么变化。
发布于 2017-08-31 18:39:48
我无意中发现了您的问题,这似乎是由于源有问题(没有PTS)和gstreamer不工作(这涉及到gstreamer bug #659489)。
如果您的流中没有B帧,您可以尝试BaseParse.set_pts_interpolation(h264parse, true)
,当计算PTS时,这个问题可能会消失。
PS:使用此解决方案的微型DVR 这里
https://stackoverflow.com/questions/42874691
复制相似问题