AVAssetReader to AudioQueueBuffer

前端 未结 2 460
一生所求
一生所求 2021-01-15 11:01

Currently, I\'m doing a little test project to see if I can get samples from an AVAssetReader to play back using an AudioQueue on iOS.

I\'ve read this: ( Play raw un

相关标签:
2条回答
  • 2021-01-15 11:32

    For some reason, even though every example I've seen of the audio queue using LPCM had

    ASBD.mBitsPerChannel = 8* sizeof (AudioUnitSampleType);
    

    For me it turns out I needed

    ASBD.mBitsPerChannel    = 2*bytesPerSample;
    

    for a description of:

    ASBD.mFormatID          = kAudioFormatLinearPCM;
    ASBD.mFormatFlags       = kAudioFormatFlagsAudioUnitCanonical;
    ASBD.mBytesPerPacket    = bytesPerSample;
    ASBD.mBytesPerFrame     = bytesPerSample;
    ASBD.mFramesPerPacket   = 1;
    ASBD.mBitsPerChannel    = 2*bytesPerSample;
    ASBD.mChannelsPerFrame  = 2;           
    ASBD.mSampleRate        = 48000;
    

    I have no idea why this works, which bothers me a great deal... but hopefully I can figure it all out eventually.

    If anyone can explain to me why this works, I'd be very thankful.

    0 讨论(0)
  • 2021-01-15 11:41

    Not sure how much of an answer this is, but there will be too much text and links for a comment and hopefully it will help (maybe guide you to your answer).

    First off I know with my current project adjusting the sample rate will effect the speed of the sound, so you can try to play with those settings. But 44k is what I see in most default implementation including the apple example SpeakHere. However I would spend some time comparing your code to that example because there are quite a few differences. like checking before enqueueing.

    First check out this posting https://stackoverflow.com/a/4299665/530933 It talks about how you need to know the audio format, specifically how many bytes in a frame, and casting appropriately

    also good luck. I have had quite a few questions posted here, apple forums, and the ios forum (not the official one). With very little responses/help. To get where I am today (audio recording & streaming in ulaw) I ended up having to open an Apple Dev Support Ticket. Which prior to tackling the audio I never knew existed (dev support). One good thing is that if you have a valid dev account you get 2 incidents for free! CoreAudio is not fun. Documentation is sparse, and besides SpeakHere there are not many examples. One thing I did find is that the framework headers do have some good info and this book. Unfortunately I have only started the book otherwise I may be able to help you further.

    You can also check some of my own postings which I have tried to answer to the best of my abilities. This is my main audio question which I have spent alot of time on to compile all pertinent links and code.

    using AQRecorder (audioqueue recorder example) in an objective c class

    trying to use AVAssetWriter for ulaw audio (2)

    0 讨论(0)
提交回复
热议问题