2017-09-15 8 views
0

J'ai un élément vidéo, avec des données ajoutées via MSE. J'essaie de déterminer combien de canaux audio il y a dans chaque piste.Obtention du nombre de canaux audio pour un AudioTrack

Les objets AudioTrack eux-mêmes n'ont pas de propriété avec cette information. La seule façon que je sais aller à ce sujet est d'utiliser l'API Web Audio:

const v = document.querySelector('video'); 
const ctx = new OfflineAudioContext(32, 48000, 48000); 
console.log(Array.from(v.audioTracks).map((track) => { 
    return ctx.createBufferSource(track.sourceBuffer).channelCount; 
})); 

Pour une vidéo avec une seule piste mono, je compte obtenir [1]. Pour une vidéo avec une seule piste stéréo, je m'attends à obtenir [2]. Pourtant, chaque fois que je reçois [2], peu importe le nombre de canaux dans la source d'origine.

Questions:

  • est-il une bonne manière directe pour obtenir le nombre de canaux dans un AudioTrack?
  • Y a-t-il autre chose que je pourrais faire avec l'API Web Audio pour obtenir le bon nombre de canaux?
+0

Je pense que sur mono les deux canaux sont les mêmes? –

+0

@KilianHertel Oui, mais cela ne me dit rien sur le nombre de canaux sous-jacents. Je pourrais échantillonner l'audio et il pourrait être mono à un moment, et être stéréo le prochain. Même dans le cas où les deux canaux étaient identiques tout le temps, je voudrais quand même signaler qu'il y a deux canaux s'il y a deux canaux. – Brad

+0

Alors pourquoi ne prenez-vous pas la première partie de chaque canal et comparez-les les uns avec les autres? Si elles sont identiques elles sont mono sinon elles sont stéréo. Par exemple avec myArrayBuffer.getChannelData (channel); En d'autres termes, il n'y a pas de moyen facile de faire soi-même, mais c'est possible. –

Répondre

0

à 1: Il n'y a aucun moyen. à 2: Voir les commentaires.