[VB.NET]Shoutcast metadata lezen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 20:56

Damic

Tijd voor Jasmijn thee

Topicstarter
Mijn vraag
Wat gaat er verkeerd met het parsen van de meta data want de eerste keer gaat het meestal goed. Ik vrees dat er iets misgaat met de "herstart" van de byte-teller (iMetaCount).

Relevante software en hardware die ik gebruik
VS2015 community

Wat ik al gevonden of geprobeerd heb
icy_metaint = meta interval in bytes
iMetaCount = hoeveel bytes er gepasseerd zijn
frame.rawdata = stream data frame (byte)

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
'- get metadata
                        'see http://ample.sourceforge.net/developers.shtml and http://www.smackfu.com/stuff/programming/shoutcast.html
                        Try
                            If (iMetaCount + frame.RawData.Length) >= icy_metaint Then
                                Dim bStart As Short = icy_metaint - iMetaCount
                                Dim meta_length As Short = frame.RawData(bStart) * 16
                                iMetaCount = frame.RawData.Length - bStart - 1
                                If meta_length > 4080 Then meta_length = 4080 '-check if value doesnt surpasse 255*16
                                If meta_length > 0 Then '-meta length = 0, pass that shiit
                                    If (meta_length + bStart + 1) <= frame.RawData.Length Then
                                        Dim stmp As String = Encoding.UTF8.GetString(frame.RawData, bStart + 1, meta_length)
                                        If stmp.IndexOf("StreamTitle='") > -1 Then
                                            sTitle = RegularExpressions.Regex.Match(stmp, "(StreamTitle=')(.*)(\\(.*\\)';StreamUrl)").Groups(2).Value.Trim()
                                        End If
                                        stmp = Nothing
                                    Else
                                        Debug.WriteLine("META::" & Now & ": RawData.Length < meta_length")
                                    End If
                                    iMetaCount -= meta_length
                                Else
                                    Debug.WriteLine("META::" & Now & ": Zero meta_length")
                                End If
                                '-remove unwanted parts of the audio buffer
                                ' For i = bStart To (bStart + 1 + meta_length)
                                ' frame.RawData(i) = 0
                                ' Next i
                                bStart = Nothing
                                meta_length = Nothing
                            Else
                                iMetaCount += frame.RawData.Length
                            End If
                        Catch ex As Exception
                            Debug.WriteLine("META::" & Now & ": " & ex.Message)
                            iMetaCount = 0
                        End Try


Bass.net gebruiken alles zit erin ;)

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag