RTMP h264/speex to HLS h264/aac

pablo platt pablo.platt at gmail.com
Thu Oct 9 05:33:44 PDT 2014


I've added h264parse before mpegtsmux and now I'm getting hls segments but
I can't play them.
I'm still getting the gst_caps_can_intersect error.

gst-launch-1.0 -v rtmpsrc name=rtmpsrc
location="rtmp:/localhsot/app/stream" ! \
    flvdemux name=demux \
    demux.video ! h264parse ! mux.  \
    demux.audio ! speexdec ! audioconvert ! voaacenc ! aacparse mux. \
    mpegtsmux name=mux ! hlssink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstSpeexDec:speexdec0.GstPad:sink: caps =
audio/x-speex, streamheader=(buffer)<
5270551476201010322e312e313110001000000000010010000000000110100040100000703e0000110100004400100001000000ffffffff400000100100000001110000000010010010001000000000,
4e5e21636f1e6e156f137210 >, rate=(int)5512, channels=(int)1
/GstPipeline:pipeline0/GstSpeexDec:speexdec0.GstPad:src: caps =
audio/x-raw, format=(string)S16LE, layout=(string)interleaved,
rate=(int)16000, channels=(int)1
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps =
audio/x-raw, format=(string)S16LE, layout=(string)interleaved,
rate=(int)16000, channels=(int)1
/GstPipeline:pipeline0/GstVoAacEnc:voaacenc0.GstPad:sink: caps =
audio/x-raw, format=(string)S16LE, layout=(string)interleaved,
rate=(int)16000, channels=(int)1
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps =
audio/x-raw, format=(string)S16LE, layout=(string)interleaved,
rate=(int)16000, channels=(int)1
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps =
video/x-h264, stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps =
video/x-h264, stream-format=(string)byte-stream,
pixel-aspect-ratio=(fraction)1/1, parsed=(boolean)true, alignment=(string)au
/GstPipeline:pipeline0/MpegTsMux:mux.GstPad:sink_65: caps = video/x-h264,
stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1,
parsed=(boolean)true, alignment=(string)au
/GstPipeline:pipeline0/MpegTsMux:mux.GstPad:src: caps = video/mpegts,
systemstream=(boolean)true, packetsize=(int)188
/GstPipeline:pipeline0/GstHlsSink:hlssink0.GstGhostPad:sink.GstProxyPad:proxypad0:
caps = video/mpegts, systemstream=(boolean)true, packetsize=(int)188
/GstPipeline:pipeline0/GstHlsSink:hlssink0/GstMultiFileSink:multifilesink0.GstPad:sink:
caps = video/mpegts, systemstream=(boolean)true, packetsize=(int)188
/GstPipeline:pipeline0/GstHlsSink:hlssink0.GstGhostPad:sink: caps =
video/mpegts, systemstream=(boolean)true, packetsize=(int)188
/GstPipeline:pipeline0/MpegTsMux:mux.GstPad:src: caps = video/mpegts,
systemstream=(boolean)true, packetsize=(int)188, streamheader=(buffer)<
46300030a500ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000b00d0001c100000001e020a2c32941,
474020308b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003b1270111111111e011f00c050418444e5618140ffffc1c1be011f01a050818224d161f1b41315a2175c0
>
/GstPipeline:pipeline0/GstHlsSink:hlssink0.GstGhostPad:sink.GstProxyPad:proxypad0:
caps = video/mpegts, systemstream=(boolean)true, packetsize=(int)188,
streamheader=(buffer)<
46300030a500ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000b00d0001c100000001e020a2c32941,
474020308b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003b1270111111111e011f00c050418444e5618140ffffc1c1be011f01a050818224d161f1b41315a2175c0
>
/GstPipeline:pipeline0/GstHlsSink:hlssink0/GstMultiFileSink:multifilesink0.GstPad:sink:
caps = video/mpegts, systemstream=(boolean)true, packetsize=(int)188,
streamheader=(buffer)<
46300030a500ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000b00d0001c100000001e020a2c32941,
474020308b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003b1270111111111e011f00c050418444e5618140ffffc1c1be011f01a050818224d161f1b41315a2175c0
>
/GstPipeline:pipeline0/GstHlsSink:hlssink0.GstGhostPad:sink: caps =
video/mpegts, systemstream=(boolean)true, packetsize=(int)188,
streamheader=(buffer)<
46300030a500ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000b00d0001c100000001e020a2c32941,
474020308b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003b1270111111111e011f00c050418444e5618140ffffc1c1be011f01a050818224d161f1b41315a2175c0
>
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstVoAacEnc:voaacenc0.GstPad:src: caps = audio/mpeg,
mpegversion=(int)4, channels=(int)1, rate=(int)16000,
stream-format=(string)raw, level=(string)1, base-profile=(string)lc,
profile=(string)lc, codec_data=(buffer)1408

(gst-launch-1.0:11809): GStreamer-CRITICAL **: gst_caps_can_intersect:
assertion 'GST_IS_CAPS (caps2)' failed

(gst-launch-1.0:11809): GStreamer-CRITICAL **: gst_caps_can_intersect:
assertion 'GST_IS_CAPS (caps2)' failed

(gst-launch-1.0:11809): GStreamer-CRITICAL **: gst_mini_object_unref:
assertion 'mini_object != NULL' failed
/GstPipeline:pipeline0/GstAacParse:aacparse0.GstPad:src: caps = audio/mpeg,
mpegversion=(int)4, channels=(int)1, rate=(int)16000,
stream-format=(string)adts, level=(string)1, base-profile=(string)lc,
profile=(string)lc, codec_data=(buffer)1408, framed=(boolean)true
/GstPipeline:pipeline0/GstAacParse:aacparse0.GstPad:sink: caps =
audio/mpeg, mpegversion=(int)4, channels=(int)1, rate=(int)16000,
stream-format=(string)raw, level=(string)1, base-profile=(string)lc,
profile=(string)lc, codec_data=(buffer)1408
/GstPipeline:pipeline0/GstFlvDemux:demux.GstPad:video: caps = video/x-h264,
stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1,
codec_data=(buffer)01320014efe101196742801486540a0fd80a841000030004010003007a768419a801100468ce1520
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps =
video/x-h264, stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1,
codec_data=(buffer)01320014efe101196742801486540a0fd80a841000030004010003007a768419a801100468ce1520
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps =
video/x-h264, stream-format=(string)byte-stream,
pixel-aspect-ratio=(fraction)1/1, width=(int)320, height=(int)240,
parsed=(boolean)true, alignment=(string)au
/GstPipeline:pipeline0/MpegTsMux:mux.GstPad:sink_65: caps = video/x-h264,
stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1,
width=(int)320, height=(int)240, parsed=(boolean)true, alignment=(string)au
/GstPipeline:pipeline0/GstFlvDemux:demux.GstPad:video: caps = video/x-h264,
stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1,
codec_data=(buffer)01320014efe101196742801486540a0fd80a841000030004010003007a768419a801100468ce1520

On Thu, Oct 9, 2014 at 10:31 AM, Baby Octopus <jagadishkamathk at gmail.com>
wrote:

> mpegtsmux needs H264 bytestream where as flvdemux gives you AVC. TRy adding
> h264parse before mpegtsmux
>
> If the above doesn't work, try decode and re-encode to see where the issue
> is
>
> ~BO
>
>
>
> --
> View this message in context:
> http://gstreamer-devel.966125.n4.nabble.com/RTMP-h264-speex-to-HLS-h264-aac-tp4668983p4668986.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20141009/9f573d17/attachment-0001.html>


More information about the gstreamer-devel mailing list