iOS 8 베타의 새로운 AVFoundation 프레임 워크를 사용하여 AVAudioEngine 및 AVAudioFile을 사용하여 데이터를 쓰는 데 문제가 있습니다.AVFoundation : AVAudioEngine 및 AVAudioFile을 사용하는 변형 된 .m4a 파일 형식
m4a 형식을 사용하는 입력 노드의 탭을 사용하여 데이터를 쓰고 싶습니다. 사람이 할 수있는 경우
import Foundation
import AVFoundation
func captureMicrophoneInput() {
var error : NSError?
var audioFileSettings = Dictionary<NSObject, AnyObject>()
audioFileSettings[AVFormatIDKey] = kAudioFormatMPEG4AAC
audioFileSettings[AVNumberOfChannelsKey] = 1
audioFileSettings[AVSampleRateKey] = 44100.0
audioFileSettings[AVEncoderBitRatePerChannelKey] = 16
audioFileSettings[AVEncoderAudioQualityKey] = AVAudioQuality.Medium.toRaw()
let audioEngine = AVAudioEngine()
let inputNode = audioEngine.inputNode
// by using .acc the output file can be played successfully
let url : CFURL = NSURL.fileURLWithPath("/path/to/outputdir/myFileWithProblematicExtension.m4a") as CFURL
var audioFile = AVAudioFile(forWriting: url, settings: audioFileSettings, error: &error)
if error != nil {
println("AVAudioFile error")
println(error)
return
}
// Write the output of the input node to disk
inputNode.installTapOnBus(0, bufferSize: 4096,
format: inputNode.outputFormatForBus(0),
block: { (audioPCMBuffer : AVAudioPCMBuffer!, audioTime : AVAudioTime!) in
audioFile.writeFromBuffer(audioPCMBuffer, error: &error)
if error != nil {
println("AVAudioFile error")
println(error)
return
}
})
audioEngine.startAndReturnError(&error)
}
내가 행복 할 것이다 : 그러나, 출력 파일은 파일이 잘 형성하고 성공적으로 재생할 수 있습니다 손상,하지만 동일한 설정으로는 .aac 할 수있는 파일 형식을 변경하는 것 같다 이것에 대한 약간의 정보를 제공하십시오. 감사!
을 내가 찾을 수
유일한 해결 방법은 오브젝티브 C 도우미 함수의 설정 사전을 구축하는 것이 었습니다 ID가 17495706 인 버그가 Apple에 제출되었습니다. – borrel
AVFormatIDKey에 kAudioFormatAppleLossless를 사용하도록 설정을 변경 했습니까? –
이것을 해결할 수 있었습니까? 나는 똑같은 문제를 겪고있다. .acc는 잘 작동하지만 .m4a는 – andlin