obtenir la durée du fichier audio
J'ai fait un enregistreur de voix de l'app, et je veux montrer toute la durée des enregistrements dans une liste. - Je sauvegarder les enregistrements comme ceci:
MediaRecorder recorder = new MediaRecorder();
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
folder = new File(Environment.getExternalStorageDirectory()
+ File.separator + "Audio recordings");
String[] files = folder.list();
int number = files.length + 1;
String filename = "AudioSample" + number + ".mp3";
File output = new File(Environment.getExternalStorageDirectory()
+ File.separator + "Audio recordings" + File.separator
+ filename);
FileOutputStream writer = new FileOutputStream(output);
FileDescriptor fd = writer.getFD();
recorder.setOutputFile(fd);
try {
recorder.prepare();
recorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
e.printStackTrace();
}
Comment puis-je obtenir la durée en secondes de ce fichier?
Merci d'avance
---EDIT
J'ai eu de travail, j'ai appelé MediaPlayer.getduration() à l'intérieur du lecteur multimédia.setOnPreparedListener() la méthode de sorte qu'il a retourné 0.
source d'informationauteur Simon
Vous devez vous connecter pour publier un commentaire.
MediaMetadataRetriever
est léger et efficace pour ce faire.MediaPlayer
est trop lourd et pourrait se posent des problèmes de performances dans la haute performance de l'environnement de défilement, par exemple, la pagination, le référencement, etc.En outre,
Error (100,0)
pourrait arriver surMediaPlayer
puisque c'est un lourd et parfois redémarrer doit être fait, encore et encore.Soit essayez ceci pour obtenir la durée en millisecondes:
Ou de mesurer le temps écoulé depuis
recorder.start()
jusqu'àrecorder.stop()
en nanosecondes:Essayez d'utiliser
Division de 1000 pour convertir secondes.
Espère que cela vous a aidé.
La façon la plus rapide de le faire est par l'intermédiaire de
MediaMetadataRetriever
. Cependant, il y a un attraperSolution est d'utiliser le chemin absolu du fichier à récupérer les métadonnées de fichier multimédia.
Ci-dessous l'extrait de code pour le faire
Maintenant, vous pouvez convertir milliseconde pour format lisible par l'homme à l'aide de l'une de ci-dessous les formats
Après vous écrire le fichier, l'ouvrir dans un lecteur multimédia, et d'appeler getDuration.
Avez-vous regardé Ringdroid?. Il est assez léger et à l'intégration est simple. Il fonctionne bien avec VBR fichiers multimédia.
Pour votre problème à l'obtention de la durée, vous pourriez faire quelque chose comme ci-dessous à l'aide de Ringdroid.
Espère que ça aide
C'est tout simplement. utilisation
RandomAccessFile
ci-Dessous l'extrait de code pour le faireVous pouvez, bien sûr, être plus, en fonction de vos besoins