2014-04-23 3 views
1

저는 iPhone의 사운드를 caf 형식으로 녹음하기 위해 레코더를 사용하고 있습니다. 그러면 wav 형식이되고 싶습니다. 그래서 인터넷에서 볼 수있는 코드로 변환 :CAF를 WAV로 변환, 채널 레이아웃 iOS

AudioChannelLayout channelLayout; 
memset(&channelLayout, 0, sizeof(AudioChannelLayout)); 
channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Mono; 
NSMutableDictionary *outputSettings = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
             [NSNumber numberWithInt:audioFormat], AVFormatIDKey, 
             [NSNumber numberWithFloat:16000.0], AVSampleRateKey, 
             [NSNumber numberWithInt:1], AVNumberOfChannelsKey, 
             [NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey, 
             nil]; 

그러나 문제는 파일의 get은 다음과 같이이다이다 : (afinfo)

File type ID: WAVE 
Num Tracks:  1 
---- 
Data format:  1 ch, 16000 Hz, 'lpcm' (0x0000000C) 16-bit little-endian signed integer 
Channel layout: Mono 
estimated duration: 2.229125 sec 
audio bytes: 71332 
audio packets: 35666 
bit rate: 256000 bits per second 
packet size upper bound: 2 
maximum packet size: 2 
audio data file offset: 4096 
optimized 
source bit depth: I16 

나는이 같은 파일이 필요합니다 :

다른 하나는 "오디오 데이터 파일 오프셋 : 4096"당신이 볼 수 있듯이 는
File type ID: WAVE 
Num Tracks:  1 
---- 
Data format:  1 ch, 16000 Hz, 'lpcm' (0x0000000C) 16-bit little-endian signed integer 
      no channel layout. 
estimated duration: 2.229125 sec 
audio bytes: 71332 
audio packets: 35666 
bit rate: 256000 bits per second 
packet size upper bound: 2 
maximum packet size: 2 
audio data file offset: 44 
optimized 
source bit depth: I16 

, 주요 차이점은 하나는 "44 오디오 데이터 파일 오프셋"이다 을 그리고 channelLayout이 하나, 너무 모노합니다 (틀린) d "채널 레이아웃 없음"

도와주세요. 정말 실망합니다. 채널 레이아웃에 대해서 어떻게 채널을 사용할 수 있습니까?

+0

누구나? 부디 –

답변

0

채널 레이아웃이없는 [NSData dataWithBytes : & channelLayout length : sizeof (AudioChannelLayout)] 대신 [NSData dataWithBytes : nil length : 0]을 사용했습니다.

NSMutableDictionary *outputSettings = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
[NSNumber numberWithInt:audioFormat], AVFormatIDKey, 
[NSNumber numberWithFloat:16000.0], AVSampleRateKey, 
[NSNumber numberWithInt:1], AVNumberOfChannelsKey, 
[NSData dataWithBytes:nil length:0], AVChannelLayoutKey, 
            nil];