CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Android] Format compressé -> PCM ?

jenaipasdenom
jenaipasdenom
Niveau 15
06 mars 2013 à 16:55:28

Salut !

Bon, je vous explique. On a un projet à faire pour les cours en Android et j'ai décidé de faire un petit lecteur audio avec possibilité de traficoter sa musique à la volée (effets sonores, vitesse de lecture etc.). J'ai commencé à regarder comment faire dans la doc et voila ce que j'ai pu en déduire :

- MediaPlayer : le plus simple, effets possibles mais pas de modification de la fréquence de lecture. (donc de vitesse)
- SoundPool : Simple également, modification de la fréquence mais pas d'effets audio sauf erreur de ma part. (si c'est possible, ce serait top !)
- AudioTrack : Tout est possible, mais prend du PCM pur en entrée.

Donc pour l'instant, sauf si les SoundPool peuvent prendre des effets, mon choix se porte plutôt sur les AudioTrack. Une question subsiste néanmoins : comment récupérer des PCM à partir de fichiers MP3, OGG assez efficacement ? J'ai bien trouvé les MediaCodec qui semblent niquel pour ça mais... ils ne sont disponibles que sur les API Level 17, donc JellyBeans :x (c'est chiant parce que c'est bien ce que l'API doit faire derrière avec les SoundPool et les MediaPlayer, mais bon)

Voila vous savez tout ! Des conseils à me donner ?

Merci d'avance pour vos conseils :)

godrik
godrik
Niveau 30
06 mars 2013 à 17:27:04

Disclaimer: je n'ai jamais fait de traitement audio de ma vie. Ce message vient de chose que j'ai lu sur le sujet, mais je n'ai jamais rien fait de semblable moi meme.

De ce que j'ai compris, si tu veux traiter du son a la volee, tu vas rencontrer des problemes si ton application reste du cote dalvik de la force. Les contraintes "temps reels" sont typiquement completement explose par la machine virtuelle qui fait un peu ce qu'elle veut. Les gens qui font des choses similaires tombent en code natif pour le faire.

Du coup, java -> code natif. Tu integre les codec a ton applis que tu recompile toi meme (les codec audio sont petit). Tu fais les traitement PCM directement sur les buffer audio. Tu fais le mixage a coup d'openAL.

Si tu pense que tu peux faire le mixage du cote java de la force, j'imagine que tu peux juste tomber en espace natif pour faire la decompression avec les libs qui vont bien.

jenaipasdenom
jenaipasdenom
Niveau 15
06 mars 2013 à 17:46:53

Niveau effets, je pense pas que ça poserait de problèmes. Les AudioTrack sont des outils assez bas niveau qui sont prévu pour ces genres de traitement. Par contre j'avoue que la compression je sais pas trop par quel bout le prendre :x Tu peux m'expliquer un peu plus en détail la démarche à suivre pour utiliser des codecs natifs dans Android s'il te plait ?

godrik
godrik
Niveau 30
06 mars 2013 à 17:48:24

c'est plutot bien raconter sur le site d'android:
http://developer.android.d.com/tools/sdk/ndk/index.html
reviens si tu as des questions.

jenaipasdenom
jenaipasdenom
Niveau 15
06 mars 2013 à 18:56:19

Merci, je vais regarder ça :)

jenaipasdenom
jenaipasdenom
Niveau 15
06 mars 2013 à 19:01:46

Hum, du coup une question : est-ce que tu connais de bonnes libs natives qui gèrent les principaux formats connus ? (ogg, mp3 et wma en tête)

godrik
godrik
Niveau 30
06 mars 2013 à 20:50:02

ogg c'est un format de stockage pas de compression. La compression est typiquement faite en vorbis donc libvorbis. Pour mp3, c'est libmad qui fait ca il me semble.

Note que ces libs sont des libs software, et il y a certainement un moyen d'utiliser l'acceleration materielle. Les distrib linux utilisent beaucoup gstreamer, mais ej ne sais pas a quel point c'est portable.

jenaipasdenom
jenaipasdenom
Niveau 15
07 mars 2013 à 12:28:56

Ah, au temps pour moi. Donc ogg est un conteneur pour l'audio comme avi est un conteneur pour la vidéo ? Bon bah je dormirai moins bête ce soir :)

Sinon, j'ai continué à mener mes recherches de mon coté et ffmpeg semble un bon choix (car intégrant pas mal de codecs) et y a quelques exemples pour Android sur le net. Tu en penses quoi ?

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment