Hi,
I am a bit new to GStreamer and Davinci. I am trying to pack compressed audio with compressed audio together in a container file but my pipeline seems to lock without any indication before writing anything to the container file.
The pipeline I am trying to use is the following:
gst-launch -v v4l2src always-copy=FALSE num-buffers=600 \
! 'video/x-raw-yuv, format=(fourcc)NV12, width=1280, height=720, framerate=(fraction)30/1' \
! TIVidenc1 codecName=h264enc engineName=codecServer contiguousInputFrame=TRUE bitRate=3000000 \
! queue ! mux. \
alsasrc num-buffers=880 ! audioconvert \
! 'audio/x-raw-int, endianness=1234, signed=true, width=16, depth=16, rate=44100, channels=2' \
! TIAudenc1 codecName=aaclcenc engineName=codecServer \
! queue ! mux. \
avimux name=mux ! filesink location=test.avi
The shell output of this pipeline is:
Setting pipeline to PAUSED ...
(gst-launch-0.10:2189): GStreamer-WARNING **: pad v4l2src0:src returned caps which are not a real subset of its template caps
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0: queue-size = 3
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)NV12, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-buffer-time = 200000
/GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-latency-time = 10000
/GstPipeline:pipeline0/GstAlsaSrc:alsasrc0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)NV12, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)NV12, width=(int)1280, height=(int)720, framerate=(fraction)30/1
New clock: GstAudioSrcClock
/GstPipeline:pipeline0/GstTIVidenc1:tividenc10.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)NV12, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstTIAudenc1:tiaudenc10.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstTIAudenc1:tiaudenc10.GstPad:src: caps = audio/mpeg, mpegversion=(int)4, channels=(int)2, rate=(int)44100, bitrate=(int)64000
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, channels=(int)2, rate=(int)44100, bitrate=(int)64000
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = audio/mpeg, mpegversion=(int)4, channels=(int)2, rate=(int)44100, bitrate=(int)64000
/GstPipeline:pipeline0/GstTIVidenc1:tividenc10.GstPad:src: caps = video/x-h264, framerate=(fraction)30/1, width=(int)1280, height=(int)720
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-h264, framerate=(fraction)30/1, width=(int)1280, height=(int)720
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-h264, framerate=(fraction)30/1, width=(int)1280, height=(int)720
/GstPipeline:pipeline0/GstAviMux:mux.GstPad:video_00: caps = video/x-h264, framerate=(fraction)30/1, width=(int)1280, height=(int)720
If I remove the line that encodes the audio(TIAudenc1 codecName=aaclcenc engineName=codecServer) , the pipeline works but obviously packs raw audio instead of compressed audio.
I have also tried with qtmux instead of avimux with the same result.
I have also tried to use the audio codec alone and it works fine:
gst-launch -v alsasrc num-buffers=1000 \
! audio/x-raw-int, endianness=1234, signed=true, width=16, depth=16, rate=44100, channels=2 \
! queue ! TIAudenc1 bitrate=64000 engineName=codecServer codecName=aaclcenc ! filesink location=output.aac
Is there a reason why the pipeline not working?