J'essaie de trouver la bonne technique pour effectuer un saut avant ou rechercher dans un fichier audio mp4 (ou m4a) tout en le jouant en utilisant les API AudioFileStream et AudioQueue sur l'iPhone. Si je passe l'en-tête complet mp4 (jusqu'à la boîte mdat) à un AudioFileStream ouvert, le type de fichier audio sous-jacent est correctement identifié (dans mon cas, AAC) et quand je passe ensuite la partie de données mdat réelle de la fichier, AudioFileStream commence correctement à générer des paquets audio et ceux-ci peuvent être envoyés à l'AudioQueue et la lecture fonctionne. Cependant, si j'essaie une approche d'accès aléatoire à la lecture du fichier, je n'arrive pas à le faire fonctionner correctement, à moins que j'envoie toujours la première image de la boîte mdat à l'AudioFileStream. Si au lieu de cela, après avoir envoyé l'en-tête mp4 à AudioFileStream, j'essaye alors de passer d'abord à une trame plus tard dans le mdat en appelant d'abord AudioFileStreamSeek() et en passant les données pour les paquets associés, AudioFileStream semble générer des paquets audio, mais quand je les passe à AudioQueue et j'appelle AudioQueuePrime(), je reçois toujours une erreur de 'nope' retournée.Lecture sautant/recherchant dans un fichier MP4
Ma question est la suivante: dois-je toujours au moins passer dans le premier paquet de la boîte mdat avant d'essayer de faire la lecture aléatoire d'autres paquets dans le fichier mp4?
Je n'arrive pas à trouver de documentation sur la lecture aléatoire de sections d'un fichier mp4 en utilisant un AudioFileStream et un AudioQueue. J'ai trouvé QuickTime File Format pdf d'Apple qui décrit la technique de recherche aléatoire dans un fichier mp4, mais c'est juste une description de haut niveau et ne mentionne pas l'utilisation d'API spécifiques (comme AudioFileStream).
Merci pour vos commentaires.