0
私はAudioUnit Renderでオフラインレンダリングをしようとしていますが、どのパラメータが間違っているかわかりません。おそらくバッファリングのサイズです。paramErr -50 from AudioUnitRender swift
私はこの問題に迅速かつコアオーディオを使用しています。ここでは、GenericOutput audioUnitからコードを取得するときのコードを少し紹介します。
おかげ
func pullGenericOutput(_ player: UnsafeMutablePointer<AUGraphPlayer>){
//var player = AUGraphPlayer()
do {
var flags = AudioUnitRenderActionFlags()
var inTimeStamp = AudioTimeStamp()
inTimeStamp.mFlags = .sampleTimeValid
var busNumber:UInt32 = 0
var numberFrames:UInt32 = 512
inTimeStamp.mSampleTime = 0
var channelCount = 2
print("Final numberFrames :\(numberFrames)")
var totFrms = MaxSampleTime
while totFrms > 0 {
if totFrms < numberFrames {
numberFrames = totFrms
print("Final numberFrames :\(numberFrames)")
print("stuck")
}
else {
totFrms -= numberFrames
}
var bufferList = AudioBufferList()
bufferList.mNumberBuffers = UInt32(channelCount)
for j in 0..<channelCount {
var buffer = AudioBuffer()
buffer.mNumberChannels = 1
buffer.mDataByteSize = numberFrames * UInt32(MemoryLayout.size(ofValue: UInt32.self))
buffer.mData = calloc(Int(numberFrames), MemoryLayout.size(ofValue: UInt32.self))
bufferList.mBuffers = buffer
}//for loop end
//var actionFlags = AudioUnitRenderActionFlags(rawValue: UInt32(flags))
// print(actionFlags)
Utility.check(AudioUnitRender(player.pointee.mGIO!, &flags, &inTimeStamp, busNumber, numberFrames, &bufferList), operation: "AudioUnitRender mGIO")
inTimeStamp.mSampleTime += inTimeStamp.mSampleTime
Utility.check(ExtAudioFileWrite(player.pointee.extAudioFile!, numberFrames, &bufferList), operation: ("extaudiofilewrite fail"))
}//while loop end
self.filesSavingCompleted(player)
}
}
オーディオ-50エラーには、サポートされていないオーディオ形式が設定されていることがよくあります。あなたのフォーマット仕様(ビット、バイト、チャンネル、サンプルレートなど)は何ですか? – hotpaw2
私はこれを使用しています http://imgur.com/a/E9N72 私はgetpropertyを使って残りの部分を埋める – masaldana2