2017-03-18 4 views
1

J'ai créé le pipeline 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); et cela fonctionne très bien avec Gstreamer version 1.9.1. Je veux utiliser des versions plus récentes pour d'autres raisons, mais avec les versions ci-dessus 1.10.X et 1.11.X pipeline s'arrête après avoir travaillé pendant une durée indéterminée entre les secondes et les minutes. La sortie de Logcat est ici:Gstreamer pour Android Buffer n'a pas de PTS

gstqtmux.c:3391:gst_qt_mux_add_buffer: error: Buffer has no PTS.

W/GStreamer+basesrc: 0:01:06.383504349 0xb9380000 gstbasesrc.c:2950:gst_base_src_loop: error: Internal data stream error.

W/GStreamer+basesrc: 0:01:06.383623672 0xb9380000 gstbasesrc.c:2950:gst_base_src_loop: error: streaming stopped, reason error (-5)

J'ai essayé pour différents modèles d'appareils photo. J'ai supprimé splitmuxsink et essayé avec mp4mux mais le résultat n'a pas changé. J'ai changé la propriété "presentation-time" de mp4mux mais rien ne change.

Répondre

0

Je suis tombé sur votre problème, qui semble être dû à la source ayant un problème (pas PTS) et gstreamer ne fonctionne pas autour d'eux (cela concerne gstreamer bug #659489).

Si vous n'avez pas d'images B dans votre flux, vous pouvez essayer BaseParse.set_pts_interpolation(h264parse, true) et le problème peut disparaître lorsque le PTS est calculé.

PS: minuscule DVR utilisant cette solution de contournement here