2017-07-21 4 views
0

Je recherche la plage d'octets dans un en-tête OggVorbis qui contient la fréquence d'échantillonnage. Dans le specification est écrit que cette information est dans l'en-tête d'identificationComment obtenir la fréquence d'échantillonnage par Ogg Vorbis Byte Buffer

La spécification here montre l'en-tête d'identification:

Il dit que le taux d'échantillonnage se trouve dans l'octet 12-15. Mais comment puis-je analyser un tableau d'octets d'un fichier oggVorbis pour obtenir cette fréquence d'échantillonnage?

Je pensais que l'en-tête d'identification doit être le premier bloc dans le tableau d'octets et la fréquence d'échantillonnage doit être un entier dans l'octet 12-15:

const buf = buffer.slice(12, 15); 
const test = new Uint32Array(buf); 

Mais il ne fonctionne pas.

Remarque: Je ne souhaite pas utiliser l'API Audio pour obtenir la fréquence d'échantillonnage.

Répondre

0

Selon la spécification, la fréquence d'échantillonnage est la plage d'octets entre 40 et 44. Le débit binaire est en 48 et 52:

enter image description here

Tout ce que vous avez à faire est de couper de ArrayBuffer et l'écrire dans un Iteger:

// get sample rate 
var bufferPart = buffer.slice(40, 48); 
var bufferView = new Uint32Array(bufferPart); 
var samplerate = bufferView[0]; 

// get bit rate 
const bufferPart = buffer.slice(48, 52); 
var bufferView = new Uint32Array(bufferPart); 
var bitrate = bufferView[0];