Décodage des données audio Opus
Je suis en train de décoder un Opus fichier raw 48 kHz.
Cependant je ne trouve aucun exemple de code pour le faire.
Mon code actuel est: est-ce
void COpusCodec::Decode(unsigned char* encoded, short* decoded, unsigned int len)
{
int max_size=960*6;//not sure about this one
int error;
dec = opus_decoder_create(48000, 1, &error);//decode to 48kHz mono
int frame_size=opus_decode(dec, encoded, len, decoded, max_size, 0);
}
L'argument "codé" est peut-être de grandes quantités de données, donc je pense que j'ai de le découper en images.
Je ne suis pas sûr de savoir comment je pourrais faire ça.
Et avec le fait d'être un débutant avec Opus, je suis vraiment peur de gâcher quelque chose.
Quelqu'un pourrait-il peut-être aider?
source d'informationauteur tmighty
Vous devez vous connecter pour publier un commentaire.
libopus fournit une API pour le tournage de l'opus paquets dans des blocs de données PCM, et vice-versa.
Mais pour stocker opus paquets dans un fichier, vous avez besoin d'un certain type de format de conteneur qui stocke les limites des paquets.
opus_demo
est, ainsi, une démo app: il a sa propre minimale format de conteneur pour des fins de test qui n'est pas documentée, et donc les fichiers produits paropus_demo
ne doit pas être distribuée. Le format conteneur pour l'opus fichiers Ogg, qui fournit également un soutien pour les métadonnées et l'échantillon décodage précis et efficace de la recherche pour variable débit des cours d'eau. Ogg Opus fichiers ont l'extension ".l'opus".Le Ogg Opus spec est à https://wiki.xiph.org/OggOpus.
(Depuis l'Opus est aussi un codec VoIP, il y a des usages de l'Opus qui ne nécessitent pas un conteneur, comme la transmission de l'Opus paquets directement au-dessus d'UDP.)
Donc tout d'abord vous devez encoder vos fichiers à l'aide de
opusenc
de l'opus-outils, pasopus_demo
. D'autres logiciels peuvent produire Ogg Opus fichiers trop (je crois que gstreamer et ffmpeg peut, par exemple), mais vous ne pouvez pas vraiment vous tromper avec des opus-outils comme c'est l'implémentation de référence.Ensuite, en supposant que vos fichiers sont standard Ogg Opus fichiers (qui peut être lu par Firefox), ce que vous devez faire est de: (a) extrait de l'opus paquets à partir du conteneur Ogg; (b) transmettre les paquets à libopus et obtenir raw PCM dos.
Idéalement, il y a une bibliothèque appelée libopusfile que c'est justement ce.
libopusfile prend en charge toutes les fonctionnalités de Ogg Opus des flux, y compris les métadonnées et la recherche (y compris la recherche d'une connexion HTTP).
libopusfile est disponible à https://git.xiph.org/?p=opusfile.git et https://github.com/xiph/opusfile.
L'API est documenté ici, et
opusfile_example.c
(xiph.org | github) fournit un exemple de code pour le décodage de WAV. Puisque vous êtes sur windows, devrais-je ajouter, il sont prêts à l'emploi Dll sur le téléchargements page.