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)
Bass.net gebruiken alles zit erin
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