【问题标题】:Gstreamer for Android Buffer has no PTSGstreamer for Android Buffer 没有 PTS
【发布时间】: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


【解决方案1】:

我偶然发现了您的问题,这似乎是由于源有问题(没有 PTS)和 gstreamer 没有解决它们(这与 gstreamer bug #659489 有关)。

如果您的流中没有 B 帧,您可以尝试BaseParse.set_pts_interpolation(h264parse, true),随着 PTS 的计算,问题可能会消失。

PS:微型 DVR 使用此解决方法here

【讨论】:

    猜你喜欢
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 2022-06-27
    • 2023-01-13
    • 1970-01-01
    相关资源
    最近更新 更多