rtspsrc ! rtph264depay ! mp4mux not working

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

rtspsrc ! rtph264depay ! mp4mux not working

Chris
I am having zero luck recording h264 from an Axis camera to to a file using mp4mux. I want to use mp4mux so I can use faststart and because ffmux_mp4 produces poor video. I'm using gstreamer 0.10.25, gst-plugins-bad 0.10.13 (mp4mux), and gstreamer-ffmpeg 0.10.08.

Has anyone gotten this to work?

Using ffmux_mp4 works, but produces video with really bad artifacts during motion:
gst-launch -e -vm rtspsrc location="rtsp://axis-camera/axis-media/media.amp?videocodec=h264&streamprofile=test_1" ! rtph264depay byte-stream=false ! capsfilter caps="video/x-h264,width=704,height=480,framerate=(fraction)25/1" ! ffmux_mp4 name=muxer ! filesink location=/tmp/test1.mp4


The same pipeline with the mp4mux muxer fails:
gst-launch -e -vm rtspsrc location="rtsp://axis-camera/axis-media/media.amp?videocodec=h264&streamprofile=test_1" ! rtph264depay byte-stream=false ! capsfilter caps="video/x-h264,width=704,height=480,framerate=(fraction)25/1" ! mp4mux name=muxer ! filesink location=/tmp/test1.mp4

This results in a "Failed to determine time to mux" error:

. . .
 Got message #113 from element "pipeline0" (async-done): no message details
0:00:00.213694898  9030 0x7fe73c005310 WARN                GST_PADS gstpad.c:3107:gst_pad_iterate_internal_links_default:<rtpsession0:recv_rtp_src> Making unsafe iterator
Got message #115 from element "filesink0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #116 from element "pipeline0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
0:00:00.221826588  9030 0x7fe75800cf90 WARN                   qtmux gstqtmux.c:1107:gst_qt_mux_add_buffer:<muxer> error: Failed to determine time to mux.
Got message #117 from element "muxer" (error): GstMessageError, gerror=(GstGError)NULL, debug=(string)"gstqtmux.c\(1107\):\ gst_qt_mux_add_buffer\ \(\):\ /GstPipeline:pipeline0/GstMP4Mux:muxer:\012Failed\ to\ determine\ time\ to\ mux.";
ERROR: from element /GstPipeline:pipeline0/GstMP4Mux:muxer: Could not multiplex stream.
Additional debug info:
gstqtmux.c(1107): gst_qt_mux_add_buffer (): /GstPipeline:pipeline0/GstMP4Mux:muxer:
Failed to determine time to mux.
. . .
Execution ended after 22521367 ns.
. . .
Freeing pipeline ...


Thanks in advance
Reply | Threaded
Open this post in threaded view
|

Re: rtspsrc ! rtph264depay ! mp4mux not working

Nathanael D. Noblet
No idea, however I've found that sometimes it is necessary to put a
parser before the muxer.

so perhaps an h264parse or mpeg4videoparse ?


On 09/25/2012 12:30 PM, Chris wrote:

> I am having zero luck recording h264 from an Axis camera to to a file using
> mp4mux. I want to use mp4mux so I can use faststart and because ffmux_mp4
> produces poor video. I'm using gstreamer 0.10.25, gst-plugins-bad 0.10.13
> (mp4mux), and gstreamer-ffmpeg 0.10.08.
>
> Has anyone gotten this to work?
>
> Using ffmux_mp4 works, but produces video with really bad artifacts during
> motion:
> gst-launch -e -vm rtspsrc
> location="rtsp://axis-camera/axis-media/media.amp?videocodec=h264&streamprofile=test_1"
> ! rtph264depay byte-stream=false ! capsfilter
> caps="video/x-h264,width=704,height=480,framerate=(fraction)25/1" !
> ffmux_mp4 name=muxer ! filesink location=/tmp/test1.mp4
>
>
> The same pipeline with the mp4mux muxer fails:
> gst-launch -e -vm rtspsrc
> location="rtsp://axis-camera/axis-media/media.amp?videocodec=h264&streamprofile=test_1"
> ! rtph264depay byte-stream=false ! capsfilter
> caps="video/x-h264,width=704,height=480,framerate=(fraction)25/1" ! mp4mux
> name=muxer ! filesink location=/tmp/test1.mp4
>
> This results in a "Failed to determine time to mux" error:
>
> . . .
>   Got message #113 from element "pipeline0" (async-done): no message details
> 0:00:00.213694898  9030 0x7fe73c005310 WARN                GST_PADS
> gstpad.c:3107:gst_pad_iterate_internal_links_default:<rtpsession0:recv_rtp_src>
> Making unsafe iterator
> Got message #115 from element "filesink0" (state-changed): GstMessageState,
> old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING,
> pending-state=(GstState)GST_STATE_VOID_PENDING;
> Got message #116 from element "pipeline0" (state-changed): GstMessageState,
> old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING,
> pending-state=(GstState)GST_STATE_VOID_PENDING;
> 0:00:00.221826588  9030 0x7fe75800cf90 WARN                   qtmux
> gstqtmux.c:1107:gst_qt_mux_add_buffer:<muxer> error: Failed to determine
> time to mux.
> Got message #117 from element "muxer" (error): GstMessageError,
> gerror=(GstGError)NULL, debug=(string)"gstqtmux.c\(1107\):\
> gst_qt_mux_add_buffer\ \(\):\
> /GstPipeline:pipeline0/GstMP4Mux:muxer:\012Failed\ to\ determine\ time\ to\
> mux.";
> ERROR: from element /GstPipeline:pipeline0/GstMP4Mux:muxer: Could not
> multiplex stream.
> Additional debug info:
> gstqtmux.c(1107): gst_qt_mux_add_buffer ():
> /GstPipeline:pipeline0/GstMP4Mux:muxer:
> Failed to determine time to mux.
> . . .
> Execution ended after 22521367 ns.
> . . .
> Freeing pipeline ...
>
>
> Thanks in advance
>
>
>
> --
> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/rtspsrc-rtph264depay-mp4mux-not-working-tp4656380.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>


--
Nathanael d. Noblet
t 403.875.4613
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

RE: rtspsrc ! rtph264depay ! mp4mux not working

Chris
Good response. That's what I originally thought should work, but it gave the
same "failed to determine time to mux" error. I've tried so many things now,
I can't even remember them all.

Here's the stream with the h264parse in it:

gst-launch -e -vm rtspsrc
location="rtsp://axis-camera/axis-media/media.amp?videocodec=h264&streamprof
ile=test_1"
! rtph264depay byte-stream=false ! capsfilter
caps="video/x-h264,width=704,height=480,framerate=(fraction)25/1" !
h264parse ! mp4mux name=muxer ! filesink location=/tmp/test1.mp4


 
-----Original Message-----
From: gstreamer-devel-bounces+chris.demots=[hidden email]
[mailto:gstreamer-devel-bounces+chris.demots=[hidden email]
rg] On Behalf Of Nathanael D. Noblet
Sent: Tuesday, September 25, 2012 2:36 PM
To: Discussion of the development of and with GStreamer
Subject: Re: rtspsrc ! rtph264depay ! mp4mux not working

No idea, however I've found that sometimes it is necessary to put a parser
before the muxer.

so perhaps an h264parse or mpeg4videoparse ?


On 09/25/2012 12:30 PM, Chris wrote:

> I am having zero luck recording h264 from an Axis camera to to a file
> using mp4mux. I want to use mp4mux so I can use faststart and because
> ffmux_mp4 produces poor video. I'm using gstreamer 0.10.25,
> gst-plugins-bad 0.10.13 (mp4mux), and gstreamer-ffmpeg 0.10.08.
>
> Has anyone gotten this to work?
>
> Using ffmux_mp4 works, but produces video with really bad artifacts
> during
> motion:
> gst-launch -e -vm rtspsrc
>
location="rtsp://axis-camera/axis-media/media.amp?videocodec=h264&streamprof
ile=test_1"
> ! rtph264depay byte-stream=false ! capsfilter
> caps="video/x-h264,width=704,height=480,framerate=(fraction)25/1" !
> ffmux_mp4 name=muxer ! filesink location=/tmp/test1.mp4
>
>
> The same pipeline with the mp4mux muxer fails:
> gst-launch -e -vm rtspsrc
>
location="rtsp://axis-camera/axis-media/media.amp?videocodec=h264&streamprof
ile=test_1"
> ! rtph264depay byte-stream=false ! capsfilter
> caps="video/x-h264,width=704,height=480,framerate=(fraction)25/1" !
> mp4mux name=muxer ! filesink location=/tmp/test1.mp4
>
> This results in a "Failed to determine time to mux" error:
>
> . . .
>   Got message #113 from element "pipeline0" (async-done): no message
details

> 0:00:00.213694898  9030 0x7fe73c005310 WARN                GST_PADS
> gstpad.c:3107:gst_pad_iterate_internal_links_default:<rtpsession0:recv
> _rtp_src>
> Making unsafe iterator
> Got message #115 from element "filesink0" (state-changed):
> GstMessageState, old-state=(GstState)GST_STATE_PAUSED,
> new-state=(GstState)GST_STATE_PLAYING,
> pending-state=(GstState)GST_STATE_VOID_PENDING;
> Got message #116 from element "pipeline0" (state-changed):
> GstMessageState, old-state=(GstState)GST_STATE_PAUSED,
> new-state=(GstState)GST_STATE_PLAYING,
> pending-state=(GstState)GST_STATE_VOID_PENDING;
> 0:00:00.221826588  9030 0x7fe75800cf90 WARN                   qtmux
> gstqtmux.c:1107:gst_qt_mux_add_buffer:<muxer> error: Failed to
> determine time to mux.
> Got message #117 from element "muxer" (error): GstMessageError,
> gerror=(GstGError)NULL, debug=(string)"gstqtmux.c\(1107\):\
> gst_qt_mux_add_buffer\ \(\):\
> /GstPipeline:pipeline0/GstMP4Mux:muxer:\012Failed\ to\ determine\
> time\ to\ mux.";
> ERROR: from element /GstPipeline:pipeline0/GstMP4Mux:muxer: Could not
> multiplex stream.
> Additional debug info:
> gstqtmux.c(1107): gst_qt_mux_add_buffer ():
> /GstPipeline:pipeline0/GstMP4Mux:muxer:
> Failed to determine time to mux.
> . . .
> Execution ended after 22521367 ns.
> . . .
> Freeing pipeline ...
>
>
> Thanks in advance
>
>
>
> --
> View this message in context:
> http://gstreamer-devel.966125.n4.nabble.com/rtspsrc-rtph264depay-mp4mu
> x-not-working-tp4656380.html Sent from the GStreamer-devel mailing
> list archive at Nabble.com.
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>


--
Nathanael d. Noblet
t 403.875.4613
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: rtspsrc ! rtph264depay ! mp4mux not working

David Röthlisberger
In reply to this post by Chris
On 25 Sep 2012, at 19:30, Chris wrote:
> I am having zero luck recording h264 from an Axis camera to to a file using
> mp4mux. I want to use mp4mux so I can use faststart and because ffmux_mp4
> produces poor video. I'm using gstreamer 0.10.25, gst-plugins-bad 0.10.13
> (mp4mux), and gstreamer-ffmpeg 0.10.08.

I don't know if this will help, but we recently needed to re-mux an h264
mpeg-ts (from a Hauppauge HD PVR capture device) into mp4 and this is
what we did:

v4l2src ! mpegtsdemux !
h264parse ! video/x-h264,stream-format=avc ! mp4mux dts-method=reorder !
filesink location=video.mp4

Note also that your GStreamer is a rather old version; you should try
updating. mp4mux is in gst-plugins-good nowadays.

Dave.

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: rtspsrc ! rtph264depay ! mp4mux not working

Chris
SOLVED

Updating gstreamer libs solved the issue. The pipeline that was failing is now working with these versions:

gst-plugins-bad-0.10.20
gst-plugins-base-0.10.30
gst-plugins-good-0.10.24
gst-plugins-ugly-0.10.16