Search code examples
gstreamerpulseaudio

Storing AAC Audio and Retrieving


I would like to store a file which has AAC audio frames,

For that i used the below pipeline,

gst-launch-1.0 filesrc location=Test_44100Hz_2ch_s16le.wav ! "audio/x-raw,rate=44100,format=s16le,channels=2" ! audioparse format=raw raw-format=s16le rate=44100 channels=2 ! faac ! aacparse ! queue ! filesink location=a1

While reading that file again to pulsesink using below pipeline,

gst-launch-1.0 filesrc location=a1 ! aacparse ! faad ! audioconvert ! audioresample ! pulsesink

I am Receiving below error, I used GST_DEBUG=3, but i am not able find the solution.

0:00:00.031924804  3379      0x2231d60 WARN                 basesrc gstbasesrc.c:3483:gst_base_src_start_complete:<filesrc0> pad not activated yet
Pipeline is PREROLLING ...
0:00:00.033044700  3379      0x2231050 WARN               baseparse gstbaseparse.c:3255:gst_base_parse_loop:<aacparse0> error: No valid frames found before end of stream
ERROR: from element /GstPipeline:pipeline0/GstAacParse:aacparse0: No valid frames found before end of stream
Additional debug info:
gstbaseparse.c(3255): gst_base_parse_loop (): /GstPipeline:pipeline0/GstAacParse:aacparse0
ERROR: pipeline doesn't want to preroll.

Can anybody help me, To solve this? I need to store AAC audio frames and need to stream that file as AAC audio stream.


Solution

  • This is it, tested working:

    gst-launch-1.0 filesrc location=WAV_44_16bit.wav ! decodebin ! audioconvert ! queue ! voaacenc ! aacparse ! queue ! mp4mux ! filesink location=aac.mp4
    
    
    gst-launch-1.0 filesrc location=aac.mp4 ! decodebin ! audioconvert ! audioresample ! alsasink
    

    In container there are metadata information stored.. without them the decoder does not know how to process the data.