Question

Je cherche une bibliothèque qui pourrait être utilisée pour manipuler des fichiers audio. Ce que je voudrais faire est essentiellement:

  1. Charger un fichier MP3 / WAV

  2. Obtenez un clip de 15 secondes du fichier

  3. Superposez un autre fichier MP3 / WAV au-dessus de celui-ci

  4. restituer sous forme de nouveau fichier MP3 / WAV

Était-ce utile?

La solution

Vous pouvez utiliser n’importe quelle API de codec MP3 commune pour décoder le flux, l’utiliser et le sauvegarder à nouveau. Par exemple, vous pouvez utiliser libLAME pour cette partie.

En ce qui concerne le mixage, vous pouvez le faire vous-même (par exemple, naïvement, ajouter deux échantillons et les diviser par deux - ce qui pourrait ne pas sembler trop bon), ou bien trouver une bibliothèque appropriée.

Vous pourriez également être intéressé par une question connexe Stack Overflow à l'adresse meilleure bibliothèque audio c linux

Autres conseils

Il ne prend pas en charge le format MP3 pour des raisons de brevet, mais libsndfile est un très bon bibliothèque open source (LGPL) pour le chargement et la sauvegarde de l’audio dans divers autres formats audio, y compris WAV.

Pour ce qui est de la partie superposition, rien de plus facile une fois les échantillons chargés en mémoire ... vous devez simplement additionner chaque échantillon du fichier A avec son échantillon correspondant dans le fichier B (et éventuellement réduire un peu la valeur de l'échantillon résultant en multipliant par une constante, si vous craignez l'écrêtage).

La bibliothèque libsox de sox (et non http://libsox.sourceforge.net/ qui est quelque chose de complètement différent) semble avoir une API simple qui peut être utilisée. La documentation donne l'exemple suivant pour le mixage stéréo à mono:

  

Représenter des échantillons sous forme d'entiers peut   causer des problèmes lors du traitement de la   l'audio. Par exemple, si un effet à   mélanger les canaux gauche et droit dans   un canal monophonique devait utiliser le   ligne

    *obuf++ = (*ibuf++ + *ibuf++)/2;
  

une distorsion peut se produire car le   ajout intermédiaire peut déborder 32   morceaux. La ligne

    *obuf++ = *ibuf++/2 + *ibuf++/2;
  

contournerait le problème de débordement   (au détriment du moins   bit significatif).

Vous pouvez essayer de jeter un coup d'œil à cela http://terminatorx.org/ Je cherchais quelque chose de similaire.

Une STK est une très bonne bibliothèque audio / synthétiseur C ++. Il fait beaucoup de choses et est sous licence de type BSD / MIT, ce qui signifie que vous pouvez l'utiliser pour développer des produits commerciaux. Wav est pris en charge mais pas MP3. Pour les MP3, vous pouvez utiliser irrklang , par exemple, qui est gratuit pour une utilisation non commerciale ( sous-utilisé, est utilisé par des tas de gens).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top