ここで説明されているように、 AVCaptureAudioDataOutput を使用してオーディオ入力を分析しようとしています。これは私が自分で理解できるものではないので、例をコピーしていますが、苦労しています。
Swift 3 の Xcode は、私にいくつかの変更を加えるよう促しました。行の割り当てでコンパイル エラーが発生しますsamples
。Xcode は、「タイプ '(UnsafeMutableRawPointer?)' の引数リストでタイプ 'UnsafeMutablePointer<_> の初期化子を呼び出すことはできません」と述べています。</p>
変更したコードは次のとおりです。
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)" )
}
このコードを修正する方法を教えてもらえますか?