AudioQueueGetCurrentTime (mQueue, timeLine, & timeStamp, NULL); для получения текущего игрового времени, оно дает какое-то большое значение, действительно ли оно
Возможно, но это не то, что вы думаете. Это не в секундах; документы на самом деле не говорят, что это в , но, гуглится, кажется, что в кадрах, по любой причине. (Например, этот технот включает в себя фрагмент, который обрабатывает его как кадры.) Попробуйте разделить на частоту дискретизации и на частоту кадров (источника), и посмотрите, какой из них даст вам нормальные числа.
как узнать длительность музыкального файла.
Нет ни одного. Аудио-очередь - это всего лишь очередь аудио-сэмплов для воспроизведения или записи. Единственная длина очереди - это количество выборок, которые вы можете поставить в очередь; очередь не знает длины чего-либо, что может в нее подаваться, если эти источники даже имеют конечную длину.
Аудио-очередь вызывает функцию, которую вы создаете, чтобы получить сэмплы от вас. Откуда ваша функция получает сэмплы (например, AudioFile), это то место, откуда вам нужно получить длину. Если вы сами генерируете сэмплы (как в генераторе тона или шума), то длина, если она есть, зависит от вас.