You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

34 lines
771 B

import struct
import sys
with open(sys.argv[1], 'rb') as fp:
data = fp.read()
ofs = 16
counter = 0
while ofs < len(data):
header = struct.unpack('B', data[ofs:ofs+1])[0]
ofs += 1
print(f'#{ofs} Header: {header}')
if header == 0x01:
srate = struct.unpack('I', data[ofs:ofs+4])[0]
ofs += 4
samples = struct.unpack('Q', data[ofs:ofs+8])[0]
ofs += 8
print(f'srate: {srate} | samples: {samples}\n')
elif header == 0x02:
dlen = struct.unpack('Q', data[ofs:ofs+8])[0]
ofs += 8
with open(f'{counter}.opus', 'wb') as fp:
fp.write(data[ofs:ofs+dlen])
counter += 1
ofs += dlen
print(f'opus len {dlen}')
elif header == 0x03:
silence = struct.unpack('Q', data[ofs:ofs+8])[0]
ofs += 8
print(f'silence {silence}')
elif header == 0x04:
break