Je voudrais savoir si quelqu'un connaît une bibliothèque pour modifier la vitesse de lecture d'une piste en temps réel. Mon idée est de charger une piste et de changer sa vitesse de lecture à la moitié ou au double. Tout d'abord, j'ai essayé avec MusicPlayer mais ce n'était pas possible du tout et j'ai ensuite essayé avec SoundPool. Le problème est qu'avec SoundPool je ne peux pas changer le taux une fois que la piste est chargée. Voici le code que je utilise (preuve de concept):Modifier le taux de lecture d'une piste en temps réel sur Android
float j = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b = (Button)findViewById(R.id.Button01);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
j = (float) (j +.5);
}
});
AssetFileDescriptor afd;
try {
SoundPool sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
afd = getAssets().openFd("wav/sample.wav");
int id = sp.load(afd, 1);
sp.play(id, 1, 1, 1, 0, j);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Lorsque j'appuie sur la touche, la vitesse de lecture devrait augmenter, mais il ne se produit pas. Une idée de comment changer le taux en temps réel?
Merci d'avance.
Salut Mark! Merci pour votre réponse, j'ai essayé et vous avez raison. Maintenant j'ai un autre problème, peut-être vous savez comment le résoudre aussi: quand j'exécute le programme, parfois j'obtiens cette erreur: ERROR/AudioCache (31): Dépassement de taille de tas! taille de req: 1058400, taille maximale: 1048576 . Mon idée est de charger des morceaux avec la taille deux fois (au moins) la taille du fichier chargé, donc je pense que je ne serai pas en mesure d'utiliser SoundPool pour cela. Qu'est-ce que tu penses? Merci – ahmontero
TBH SoundPool est un buggy de **** l'un des bugs que vous rencontrerez est que chaque pool de sons doit avoir au plus 1 Mo de données son associées, que ce soit dans 1 fichiers ou 10. Son vraiment fait pour jouer de petits effets sonores. Googling pour les bogues SoundPool se révélera un peu plus, vous devrez faire attention si vous l'utilisez. Si vous devez travailler avec des pistes plus grandes, je vous recommande de créer votre propre moteur de son et de vider les échantillons bruts sur une instance AudioTrack. – Mark
Quelque chose j'ai oublié de mentionner, la limite de 1 Mo est sur la taille du fichier brut, de sorte que vous pouvez compresser vos fichiers wav à ogg et peut-être contourner la limitation de SoundPool – Mark