2010-04-16 6 views
3

J'utilise actuellement des files d'attente audio sur l'iPhone pour enregistrer et lire du son. Ce que je voudrais pouvoir faire est d'enregistrer de l'audio, permettre à l'utilisateur de faire une pause dans la file d'attente d'enregistrement, et de rechercher dans l'audio pour sélectionner une position d'où ils peuvent recommencer à enregistrer. J'ai surmonté le problème de recherche en rendant les tailles AudioQueueBuffer de lecture assez petites pour que le rappel de file d'attente audio de lecture se produise à un taux qui permet à l'utilisateur d'utiliser un contrôle de curseur pour entendre l'audio avant.Enregistrement/Lecture avec AudioQueue sur iPhone

Je pense que je peux réaliser l'enregistrement à une nouvelle position en définissant le paramètre inStartingPacket de la fonction AudioFileWritePackets que j'appelle depuis le rappel de file d'attente d'enregistrement audio.

Le problème est que seul l'audio insère sur l'audio précédemment enregistré. La longueur du fichier ne change évidemment pas, donc si l'utilisateur revenait en arrière et enregistrait moins d'audio qu'auparavant, l'ancien son reste après la fin du nouvel enregistrement audio.

Y a-t-il un moyen de tronquer l'AudioFile au moment où l'utilisateur commence à insérer le nouvel audio, est-il possible de supprimer l'ancien audio à partir de l'insertion ou y a-t-il un meilleur moyen de aller à propos de cette tâche?

Merci

Répondre

3

J'ai la même question. Mon approche actuelle consiste à enregistrer le nouvel audio dans un fichier séparé, puis lorsque cela est fait concaténer la première partie du premier fichier avec le deuxième fichier, écrire le résultat dans un troisième fichier, puis renommer le troisième fichier sur le premier fichier et supprimer le second fichier. L'opération de concaténation nécessite l'écriture d'une fonction personnalisée mais assez simple à l'aide de l'API AudioFile.

J'aimerais aussi entendre des idées plus éclairées, ou voir une fonction AudioFileTruncate().

Questions connexes