У меня проблема с воспроизведением аудиоданных после добавления к ним дополнительной записи.Вот общая последовательность событий, которые не возвращают никаких ошибок:
AudioQueueNewInput // Start audio queue
AudioFileCreateWithURL // Create audio file
AudioFileSetProperty // Set magic cookie
AudioQueueAllocateBuffer // Allocate buffers
AudioQueueEnqueueBuffer // Prime buffer
AudioQueueStart // Start the audio queue
// Record some audio in the audio queue callback...
AudioQueueWritePackets
AudioQueueEnqueueBuffer
AudioQueueStop // Stop the queue
AudioQueueFlush // Flush remaining buffers in the queue
AudioFileSetProperty // Set magic cookie again (needed for some formats?)
AudioQueueDispose // Dispose queue
AudioFileClose // Close the file
Я могу запускать и останавливать очередь для добавления записи, и она прекрасно работает.Звук отлично воспроизводится, и я могу воспроизвести, как я ожидаюПроблема возникает, когда я заново открываю файл и пытаюсь добавить:
AudioQueueNewInput // Start audio queue
AudioFileOpenURL // Re-open audio file
AudioFileGetProperty // Get packet count and resume recording at last packet
AudioFileOptimize // "Optimize" the file for appending
AudioFileSetProperty // Set magic cookie
AudioQueueAllocateBuffer // Allocate buffers
AudioQueueEnqueueBuffer // Prime buffer
AudioQueueStart // Start the audio queue
// Record some audio in the audio queue callback...
AudioQueueWritePackets
AudioQueueEnqueueBuffer
AudioQueueStop // Stop the queue
AudioQueueFlush // Flush remaining buffers in the queue
Я стараюсь возобновить запись с последнего пакета аудио, и, действительно, данные добавляются в файл, потому что яможно увидеть размер файла растет.Однако при воспроизведении файла я не слышу прилагаемое аудио.Он воспроизводит исходное аудио, но останавливается, прежде чем я ожидаю услышать дополнительное аудио.
Я пробовал разные комбинации, перемещаясь по AudioFileOptimize и сбрасывая волшебный файл cookie, но безрезультатно.
ЗвукФормат, который я использую, выглядит следующим образом:
static const AudioStreamBasicDescription kMyAudioFormat = {
.mFormatID = kAudioFormatAppleIMA4,
.mSampleRate = 44100.0,
.mChannelsPerFrame = 2,
.mBitsPerChannel = 0,
.mBytesPerPacket = 68,
.mBytesPerFrame = 0,
.mFramesPerPacket = 64,
.mFormatFlags = 0
};
Что здесь происходит?Почему добавленное аудио не будет воспроизводиться после повторного открытия AudioFileID?