AVCaptureAudioDataOutput을 사용하여 오디오 입력을 분석하려고합니다 (here). 이것은 내가 스스로 알아낼 수있는 것이 아니므로 예제를 복사하고 있지만 어려움을 겪고 있습니다.스위프트 3 : AVCaptureAudioDataOutput을 사용하여 오디오 입력을 분석하십시오.
스위프트 3의 Xcode는 몇 가지 변경을 요구했습니다. samples
을 할당하는 줄에서 컴파일 오류가 발생합니다. 엑스 코드가 말한다 "유형의 초기화를 호출 할 수 없습니다 '형식의 인수 목록에 UnsafeMutablePointer < _>는'(? UnsafeMutableRawPointer) '"
여기에 내가 수정 한대로 코드입니다 :
func captureOutput(_ captureOutput: AVCaptureOutput!,
didOutputSampleBuffer sampleBuffer: CMSampleBuffer!,
from connection: AVCaptureConnection!){
var buffer: CMBlockBuffer? = nil
var audioBufferList = AudioBufferList(mNumberBuffers: 1,
mBuffers: AudioBuffer(mNumberChannels: 1, mDataByteSize: 0, mData: nil))
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(
sampleBuffer,
nil,
&audioBufferList,
MemoryLayout<AudioBufferList>.size, // changed for Swift 3
nil,
nil,
UInt32(kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment),
&buffer
)
let abl = UnsafeMutableAudioBufferListPointer(&audioBufferList)
var sum:Int64 = 0
var count:Int = 0
var bufs:Int = 0
for buf in abl {
let samples = UnsafeMutableBufferPointer<Int16>(start: UnsafeMutablePointer(buf.mData), // Error here
count: Int(buf.mDataByteSize)/sizeof(Int16))
for sample in samples {
let s = Int64(sample)
sum = (sum + s*s)
count += 1
}
bufs += 1
}
print("found \(count) samples in \(bufs) buffers, sum is \(sum)")
}
사람이 수 이 코드를 수정하는 방법을 알려주십시오.