Audio Metadata

Sree Gowri sreegowris at gmail.com
Mon Jul 2 06:09:38 PDT 2012


On Fri, May 4, 2012 at 11:22 AM, Sree Gowri <sreegowris at gmail.com> wrote:

>
>
> On Fri, Apr 27, 2012 at 1:13 AM, Stefan Sauer <ensonic at hora-obscura.de>wrote:
>
>> **
>> On 04/26/2012 07:53 PM, Sree Gowri wrote:
>>
>>
>>
>> On Wed, Apr 25, 2012 at 12:19 PM, Sree Gowri <sreegowris at gmail.com>wrote:
>>
>>>
>>>
>>>  On Tue, Apr 24, 2012 at 9:42 PM, Sree Gowri <sreegowris at gmail.com>wrote:
>>>
>>>>
>>>>
>>>>  On Tue, Apr 24, 2012 at 5:46 PM, Stefan Sauer <ensonic at hora-obscura.de
>>>> > wrote:
>>>>
>>>>>   On 04/24/2012 11:18 AM, Sree Gowri wrote:
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Apr 16, 2012 at 12:53 AM, Stefan Sauer <
>>>>> ensonic at hora-obscura.de> wrote:
>>>>>
>>>>>>  On 04/12/2012 06:23 AM, Sree Gowri wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I am trying to extract audio metadata like
>>>>>> streamurl,streamtitle,artist,genre,album.However I am not able to extract
>>>>>> the metadata using GstTagList. Below is the snippet of the code. Does
>>>>>> anyone suggest what are the additions to be done in order to extract the
>>>>>> metadata?
>>>>>>
>>>>>> Only the following data has been extracted.
>>>>>>              layer: 3
>>>>>>              mode: joint
>>>>>>              emphasis: none
>>>>>>              audio codec: MPEG-1 layer 3
>>>>>>              bitrate: 128000
>>>>>>
>>>>>> Pipeline is as follows:
>>>>>>
>>>>>> [code]
>>>>>> app->pipeline= gst_parse_launch("appsrc name=mysource ! audio/mpeg  !
>>>>>> mad !  alsasink", NULL);
>>>>>> [/code]
>>>>>>
>>>>>>  "appsrc name=mysource ! audio/mpeg  ! mp3parse ! mad !  alsasink"
>>>>>> or even better
>>>>>> "appsrc name=mysource ! audio/mpeg  ! decodebin2 !  alsasink"
>>>>>>
>>>>>> Stefan
>>>>>>
>>>>>>
>>>>>> Audio data fed to the appsrc element
>>>>>>
>>>>>> [code]
>>>>>> buf =( GstBuffer *) gst_app_buffer_new (data, READBUF, g_free, data);
>>>>>> g_signal_emit_by_name (GST_APP_SRC (app->appsrc), "push-buffer", buf,
>>>>>> &ret);
>>>>>> [/code]
>>>>>>
>>>>>> Bus message
>>>>>>
>>>>>> [code]
>>>>>> case GST_MESSAGE_TAG:
>>>>>> {
>>>>>>     GstTagList *tags = NULL;
>>>>>>         char *artist;
>>>>>>         gst_message_parse_tag (message, &tags);
>>>>>>         g_print ("Got tags from element %s:\n", GST_OBJECT_NAME
>>>>>> (message->src));
>>>>>>         if (gst_tag_list_get_string (tags, GST_TAG_ARTIST, &artist))
>>>>>>         {
>>>>>>            printf("got artist: %s\n",artist);
>>>>>>         }
>>>>>>         else
>>>>>>         {
>>>>>>           printf("no artist!! \n");
>>>>>>         }
>>>>>>         gst_tag_list_foreach (tags, print_tag, NULL);
>>>>>>         g_print ("\n");
>>>>>>         gst_tag_list_free (tags);
>>>>>>         break;
>>>>>> [/code]
>>>>>>
>>>>>> print_tag function code
>>>>>> [code]
>>>>>> static void print_tag (const GstTagList * list, const gchar * tag,
>>>>>> gpointer unused)
>>>>>> {
>>>>>>   gint i, count;
>>>>>>   count = gst_tag_list_get_tag_size (list, tag);
>>>>>>   for (i = 0; i < count; i++) {
>>>>>>     gchar *str;
>>>>>>     if (gst_tag_get_type (tag) == G_TYPE_STRING) {
>>>>>>       if (!gst_tag_list_get_string_index (list, tag, i, &str))
>>>>>>         g_assert_not_reached ();
>>>>>>
>>>>>>     } else {
>>>>>>       str =
>>>>>>           g_strdup_value_contents (gst_tag_list_get_value_index
>>>>>> (list, tag, i));
>>>>>>     }
>>>>>>     if (i == 0) {
>>>>>>       g_print ("  %15s: %s\n", gst_tag_get_nick (tag), str);
>>>>>>     } else {
>>>>>>       g_print ("                 : %s\n", str);
>>>>>>     }
>>>>>>     g_free (str);
>>>>>>   }
>>>>>> }
>>>>>> [/code]
>>>>>>
>>>>>> Thanks and Regards,
>>>>>> Sree Gowri
>>>>>>
>>>>>>        Hi stephan,
>>>>>
>>>>>       First would like to thank you for the input you provided.
>>>>>
>>>>>       I tried both the pipelines that you have mentioned,however meta
>>>>> data has not been    extracted.
>>>>>
>>>>>      Kindly request you to let me know if there are any other changes
>>>>> that needs to be done.
>>>>>
>>>>>
>>>>>  Are you sure the stream you are looking at is tagged with such
>>>>> metadata? Try gst-launch-0.10 -t playbin2 uri=...
>>>>>
>>>>> Stefan
>>>>>
>>>>
>>>>    Yes the stream contains the metadata like streamTitle, streamUrl. In
>>>> order to check does the stream really has metadata, appsrc buffer is
>>>> written to a file and checked using hexedit and I can find the
>>>> metadata.Sure will try your suggestion tomorrow and update you. Thankyou.
>>>>
>>>
>>> Regards,
>>> Sree Gowri
>>>
>>>      Hi Stephan,
>>>
>>>       gst-launch-0.10 -t playbin2 uri=.... is also not extracting the
>>> metadata.
>>>
>>>       Actually I am streaming the shoutcast stream.Audio stream data is
>>> feed to the appsrc element.
>>>     Following is the header that is received
>>>
>>> ICY 200 OK^M
>>> icy-notice1:<BR>This stream requires <a href="http://www.winamp.com/
>>> ">Winamp</a><BR>^M
>>> icy-notice2:SHOUTcast Distributed Network Audio Server/win32 v1.9.8<BR>^M
>>> icy-name:Radio Afsana Online 24/7 Radio - New - Remix: Non-Stop^M
>>> icy-genre:Desi, Hindi , Bollywood, Fiji, Indian^M
>>> icy-url:http://www.radioafsana.com^M
>>> content-type:audio/mpeg^M
>>> icy-pub:1^M
>>> icy-metaint:8192^M
>>> icy-br:128^M
>>>
>>> Metadata is available as "StreamTitle='Aditi Singh Sharma - Luv Ka The
>>> End - LUV KA THE END."
>>> However I am not able to extract the same.
>>>
>>> Also not able to extract the metadata for the downloaded mp3 file using
>>> the following pipelines. However the above command that you mentioned will
>>> extract the metadata for the downloaded mp3 file
>>>
>>>
>>> appsrc name=mysource ! audio/mpeg  ! mad !  alsasink
>>>  appsrc name=mysource ! audio/mpeg  ! mp3parse ! mad !  alsasink
>>>  appsrc name=mysource ! audio/mpeg  ! decodebin2 !  alsasink
>>>
>>>  Your input would be of great help.
>>>
>>> Regards,
>>> Sree Gowri.
>>>
>>>
>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> gstreamer-devel mailing listgstreamer-devel at lists.freedesktop.orghttp://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> gstreamer-devel mailing list
>>>>>> gstreamer-devel at lists.freedesktop.org
>>>>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> gstreamer-devel mailing listgstreamer-devel at lists.freedesktop.orghttp://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> gstreamer-devel mailing list
>>>>> gstreamer-devel at lists.freedesktop.org
>>>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>>>
>>>>>
>>>>   Hi Stephan,
>>>
>>
>> I am still stuck with metadata parsing as mentioned earlier. Could you
>> please help me.
>>
>> Thanks and Regards,
>> Sree Gowri
>>
>>
>> Just tried te winamp stream from http://www.radioafsana.com and it works
>> fine (use the uri from inside the listen.pls).
>>
>> Stefan
>>
>> gst-launch -t playbin2 uri=http://208.186.112.40:8000/
>> Setting pipeline to PAUSED ...
>> Pipeline is PREROLLING ...
>> FOUND TAG      : found by element "source".
>>     organization: Radio Afsana Online 24/7 Radio - New - Remix: Non-Stop
>>            genre: Desi, Hindi , Bollywood, Fiji, Indian
>>         location: http://www.radioafsana.com
>> FOUND TAG      : found by element "icydemux0".
>>     organization: Radio Afsana Online 24/7 Radio - New - Remix: Non-Stop
>>            genre: Desi, Hindi , Bollywood, Fiji, Indian
>>         location: http://www.radioafsana.com
>> FOUND TAG      : found by element "mpegaudioparse0".
>>      audio codec: MPEG 2 Audio, Layer 3 (MP3)
>>  nominal bitrate: 24000
>> FOUND TAG      : found by element "mpegaudioparse0".
>>          has crc: FALSE
>>     channel mode: mono
>> FOUND TAG      : found by element "mad0".
>>      audio codec: MPEG-1 Layer 3 (MP3)
>> FOUND TAG      : found by element "mpegaudioparse0".
>>  minimum bitrate: 24193
>>          bitrate: 24010
>>  maximum bitrate: 24193
>> FOUND TAG      : found by element "mpegaudioparse0".
>>  minimum bitrate: 23887
>> Prerolled, waiting for buffering to finish...
>> Pipeline is PREROLLED ...
>> Setting pipeline to PLAYING ...
>> New clock: GstPulseSinkClock
>> FOUND TAG      : found by element "icydemux0".
>>            title: Shahid Mallya - Rabba Main Toh Mar Gaya Oye - MAUSAM
>> [2011]
>>
>>
>> _______________________________________________
>> gstreamer-devel mailing listgstreamer-devel at lists.freedesktop.orghttp://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>
>> ______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>
> Hi Stephan,
>
> Using http request along with gstreamer is working fine along with the
> metadata.
>
> However I would like to extract the metadata from the buffer that is fed
> to the appsrc element.
>
> Encountered the following error using the pipelines where downloading and
> feeding data is happening parallely
>
>
> "appsrc name=mysource ! audio/mpeg  ! decodebin2 !  alsasink"
> "appsrc name=mysource ! audio/mpeg  ! mp3parse ! mad !  alsasink"
>
> ####
> ERROR from element mpegaudioparse0: Failed to parse stream
> Debugging info: gstbaseparse.c(2140): gst_base_parse_check_sync ():
> /GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0
> ERROR from element mysource: Internal data flow error.
> Debugging info: gstbasesrc.c(2582): gst_base_src_loop ():
> /GstPipeline:pipeline0/GstAppSrc:mysource:
> streaming task paused, reason error (-5)
> ERROR from element mpegaudioparse0: Failed to parse stream
> Debugging info: gstbaseparse.c(2140): gst_base_parse_check_sync ():
> /GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0
> ERROR from element mpegaudioparse0: No valid frames found before end of
> stream
> Debugging info: gstbaseparse.c(1037): gst_base_parse_sink_eventfunc ():
> /GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0
> ERROR from element decodebin20: GStreamer encountered a general stream
> error.
> Debugging info: gstdecodebin2.c(3239): gst_decode_bin_expose ():
> /GstPipeline:pipeline0/GstDecodeBin2:decodebin20:
> all streams without buffers
> * About to connect() to scfire-dtc-aa03.stream.aol.com port 80 (#0)
> *   Trying 205.188.234.3... * connected
> * Connected to scfire-dtc-aa03.stream.aol.com (205.188.234.3) port 80 (#0)
> > GET /stream/1013 HTTP/1.1
> Host: scfire-dtc-aa03.stream.aol.com
> Accept: */*
> ####
>
> Request your kind inputs on this.
>
> Thanks and Reards,
> Sree Gowri
>


Hi Stephan,

Unfortunately I was not able to work on extracting audio metadata from
buffer from last 2 months.I started working on this again.

Using curl, audio data is downloaded and using the following pipeline(all
three pipelines work), I am able to play the buffer data. However not able
to extract the streamtitle metadata. Other metadata has been extracted like
layer,mode,bitrate etc..

app->pipeline= gst_parse_launch("appsrc name=mysource ! audio/mpeg ! mad !
alsasink", NULL);
app->pipeline= gst_parse_launch("appsrc name=mysource ! audio/mpeg  !
decodebin2 !  alsasink", NULL);
app->pipeline= gst_parse_launch("appsrc name=mysource ! audio/mpeg  !
mp3parse ! mad !  alsasink", NULL);

I tried even setting "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" in
curl before sending http request but still not able to extract the metadata.

I somehow feel some prerequisites needs to be set in the curl before
sending http request for downloading buffer. It would be really great to
have your suggestions on this.

Thanks and Regards,
Sree,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20120702/73a70907/attachment-0001.html>


More information about the gstreamer-devel mailing list