Проблемы с добавлением аудио после AudioFileOpenURL - PullRequest
0 голосов
/ 27 сентября 2011

У меня проблема с воспроизведением аудиоданных после добавления к ним дополнительной записи.Вот общая последовательность событий, которые не возвращают никаких ошибок:

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?

1 Ответ

0 голосов
/ 04 октября 2011

Необходим для вызова AudioFileClose.Для получения дополнительной информации см .: http://lists.apple.com/archives/Coreaudio-api/2011/Oct/msg00014.html

...