6

Dữ liệu được lưu trữ trong CMSampleBuffer khi sử dụng AVCaptureAudioDataOutput là gì? Nó cung cấp CMSampleBuffers thông qua phương thức ủy nhiệm –captureOutput:didOutputSampleBuffer:fromConnection: nhưng bên trong CMSampleBuffer là gì? PCM hoặc được nén? Các mẫu, số kênh, v.v. là gì? Làm thế nào điều này có thể được sử dụng để streaming âm thanh từ thiết bị? Googling trong vài giờ đã không giúp tôi.Định dạng âm thanh CMSampleBuffer

Cảm ơn trước

Trả lời

7

vẻ như bạn có thể nhận được ASBD theo cách này:

sampleBuffer-> 
    CMSampleBufferGetFormatDescription -> 
    CMAudioFormatDescriptionGetStreamBasicDescription 

thì ASBD sẽ nêu chi tiết các kích thước khung hình, nếu nó được nén, endianness vv

Để chứng minh điều này (không có kiểm tra lỗi) và nhận tỷ lệ mẫu:

CMSampleBufferRef cmSampleBuffer = ...; 

CMFormatDescriptionRef formatDescription = 
    CMSampleBufferGetFormatDescription(cmSampleBuffer); 

const AudioStreamBasicDescription* const asbd = 
    CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription); 

double sampleRate = asbd->mSampleRate; 
+0

cảm ơn! tôi chỉ sử dụng 'CMSampleBufferGetFormatDescription' và nó cho thấy tất cả các thông tin tôi đang tự hỏi – peetonn

+0

và có thể cấu hình' AVAudioOutput' với các tham số khác nhau mà tôi nhận được không? – peetonn

+1

@peetonn bạn được chào đón. về câu hỏi của bạn: Tôi không chắc chắn nếu bạn có nghĩa là 'AudioOutputUnit',' AVAudioPlayer' hoặc 'AVCaptureAudioDataOutput' khi bạn nói' AVAudioOutput'. Tôi lớn lên trên các lớp Core và AU; Tôi đoán rằng đó là bất cứ điều gì họ muốn cung cấp, để tránh phí chuyển đổi. Đó là giá trị tìm kiếm ở đây. – justin

Các vấn đề liên quan