Obtenga posiciones de range de bytes para un range de time específico de un file mp3

Me gustaría poder determinar en qué position de byte comienza y termina un segmento de un file mp3 comprimido NSData.

Por ejemplo, si estoy reproduciendo un file mp3 usando el reproductor AVPlayer (o cualquier reproductor) de 1 minuto de duración y 1000000 bytes, me gustaría saber aproximadamente en cuántos bytes en el file pasa la marca de 30 segundos, ¿cuántos bytes bytes pasa la marca de 40 segundos.

Tenga en count que debido a que el file mp3 está comprimido, no puedo dividir los bytes por la mitad para determinar la marca de 30 segundos.

Si esto no se puede hacer con Swift / Objective-C, ¿sabe si esta determinación se puede hacer con cualquier lenguaje de progtwigción? ¡Gracias!

Resulta que tuve un problema diferente para resolver. Estaba tratando de aproximar la position de bytes de un time específico, por ejemplo, el punto 4:29 de un episodio de 32:45 largo de podcast, en unos segundos de precisión.

Usé una function en estas líneas para calcular la position de byte aproximada:

startTimeBytesPosition = (startTimeInSeconds / episodeDuration) * episodeFileSize 

Y extrañamente, esa function funcionó como un encanto para algunos episodios, pero para otros, el time de inicio resultante se desactivaría en unos 30-40 segundos.

Resulta que esta inexactitud estaba sucediendo porque algunos files mp3 contienen metadatos al principio y los files de imágenes almacenados dentro de los metadatos pueden ser de + 500 KB y, por lo tanto, mi cálculo del time basado en la position de bytes para cualquier episodio con un file de image sería desconectado por alnetworkingedor de 500 KB (que se tradujo en unos 30-40 segundos).

Para resolver esto, primero se determina el tamaño en bytes de los metadatos en un file mp3, y luego lo uso para compensar la function de aproximación:

 startTimeBytesPosition = metadataBytesOffset + (startTimeInSeconds / episodeDuration) * episodeFileSize 

Hasta ahora, este código parece estar haciendo un buen trabajo al aproximar el time en function de la position de los bytes con precisión en unos pocos segundos.

Sin embargo, debo tener en count que esto supone que los metadatos de la image siempre aparecerán al comienzo del file mp3, y no sé si ese será siempre el caso.