Tôi muốn có thể lấy lại AudioBufferList từ AVAssetReader có 2 bộ đệm để tôi có thể xử lý âm thanh trái và phải thông qua AudioUnit. Tôi đã thử bằng cách sử dụng các thiết lập đầu ra dưới đây nhưng nó sẽ không đọc miễn là tôi xác định bố trí âm thanh stereo được thiết lập bởi kAudioChannelLayoutTag_Stereo.Có thể sử dụng AVAssetReader để lấy lại bố cục kênh âm thanh nổi không?
Có thể cho AVAssetReader trả lại kết quả không xen kẽ không?
Nếu không, làm cách nào để chuyển đổi nó thành một AudioBufferList không xen kẽ? Tôi đã cố gắng sử dụng Dịch vụ chuyển đổi âm thanh nhưng tôi không thể nhận nó để chấp nhận giá trị đầu vào hoặc đầu ra cho AudioStreamBasicDescription. (ASBD) Nếu tôi không thể lấy dữ liệu theo định dạng tôi muốn từ AVAssetReader, tôi muốn ít nhất có thể chuyển đổi nó sang định dạng tôi cần.
Bất kỳ mẹo nào được đánh giá cao.
- (NSDictionary *) getOutputSettings {
AudioChannelLayout channelLayout;
memset(&channelLayout, 0, sizeof(AudioChannelLayout));
channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey,
[NSNumber numberWithFloat:44100.0], AVSampleRateKey,
[NSNumber numberWithInt:2], AVNumberOfChannelsKey,
[NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey,
[NSNumber numberWithInt:16], AVLinearPCMBitDepthKey,
[NSNumber numberWithBool:NO], AVLinearPCMIsNonInterleaved,
[NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
[NSNumber numberWithBool:NO], AVLinearPCMIsBigEndianKey,
nil];
return outputSettings;
}
Xong. Tôi tìm thấy một số cái cũ treo ở đó. – Brennan