3read audio stream from audio file
24 ext = os.path.splitext(filename)[1].lower()
29 elif ext ==
'.flac':
pass
30 elif ext ==
'.ape':
pass
31 elif ext ==
'.wav':
pass
43 return self.
f.readBytes(len)
48 buf = self.
f.readBytes(3)
49 if len(buf) < 3
or self.
f.tell() > 50000:
57 tl = struct.unpack(
'4b', self.
f.readBytes(4))
58 taglen = (tl[0]<<21)|(tl[1]<<14)|(tl[2]<<7)|tl[3]
64 buf = self.
f.readBytes(1)
65 if len(buf) < 1
or self.
f.seek(0,1) > 1000000:
68 rbit = struct.unpack(
'B',self.
f.readBytes(1))[0] >> 5
77 buf = self.
f.readBytes(27)
78 if len(buf) < 27
or self.
f.tell() > 50000:
81 if buf[0:4] != b
'OggS':
84 numseg = struct.unpack(
'B', buf[26])[0]
87 segtbl = struct.unpack(
'%dB'%numseg, self.
f.readBytes(numseg))
89 buf = self.
f.readBytes(7)
91 if buf == b
"\x05vorbis":
95 self.
f.seek(seglen-7,1)
100 buf = self.
f.readBytes(16)
101 if len(buf) < 16
or self.
f.tell() > 50000:
103 guid = buf.encode(
"hex");
104 if guid ==
"3626b2758e66cf11a6d900aa0062ce6c":
110 objlen = struct.unpack(
'<Q', self.
f.readBytes(8))[0]
111 self.
f.seek(objlen-24,1)
114 if self.
f.readBytes(4) != b
'fLaC':
118 buf = self.
f.readBytes(4)
119 if len(buf) < 16
or self.
f.tell() > 50000:
122 metalen = buf[1] | (buf[2]<<8) | (buf[3]<<16);
123 self.
f.seek(metalen,1)
def ReadAudioStream(self, len, offset=0)