을 재생할 수 .M4A 파일을 생성하지 않는 다른 iOS 장비에 (안전/암호화). AVAudioRecorder를 사용하여 오디오 파일을 녹음하고 AVAudioPlayer를 사용하여 수신 된 모든 오디오 파일을 재생합니다. AVAudioRecorder 열고 나는 오디오 파일을 보낼 수있는 iOS 앱을 수정하려고
는 지금 만들고 안드로이드와 호환되는 파일을 보낼 수있는 앱을 수정하려합니다. 하지만 안드로이드 기기, iOS 기기에서이 만든[settings setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
[settings setValue:[NSNumber numberWithInt:AVAudioQualityMin] forKey:AVEncoderAudioQualityKey];
[settings setValue:[NSNumber numberWithInt:16] forKey:AVEncoderBitRateKey];
[settings setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];
[settings setValue:[NSNumber numberWithFloat:48000.0] forKey:AVSampleRateKey];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dirPath = [paths objectAtIndex:0];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"yyyy-MM-dd HH-mm"];
NSString *filename = [NSString stringWithFormat:@"%@.aac", [format stringFromDate:NSDate.date]];
파일은 Mac에서 재생할 수 있습니다 : 나는이에 대한 기존의 AVAudioRecorder 코드를 수정했습니다. 파일 확장자가 ".m4a"로 끝나도록 수동으로 변경된 경우 파일이 Android에서 재생됩니다.
(이하 "는 .aac"형식의 장점은 응용 프로그램의 이전 버전이 파일을 수신하고 재생할 수 있다는 것입니다 - 나는 이전 버전과의 호환성을 유지했습니다.)
그래서 나는이 변화를 만들어 :NSString *filename = [NSString stringWithFormat:@"%@.m4a", [format stringFromDate:NSDate.date]];
그러나 결과 파일 (AVAudioRecorder에서 오류없이 생성됨)은 Mac이나 iOS 장치에서 재생할 수 없습니다. Android에서 작동하는지 여부를 기다리고 있습니다.
AVAudioPlayer 해당 파일을 열려고 할 때, 그것은 출력 :
오류 도메인 = NSOSStatusErrorDomain 코드 = 1685348671 ". 작업 을 완료 할 수 없습니다 (OSStatus 오류 1685348671.)"코드 1685348671 -> "dta?": 파일 형식이 잘못되었거나 형식이 잘못된 오디오 파일의 인스턴스가 아니거나 오디오 파일로 인식되지 않습니다.
파일 이름을 ".aac"로 다시 변경해도 Mac 또는 iOS에서 아무것도로드 할 수 없다는 사실은 변경되지 않습니다.
지금은 ".aac"파일을 만든 다음 Android 끝에서 ".aac"을 ".m4a"로 바꾸고 재생하려고하는 것이 가장 좋은 해결책 인 것 같습니다.
질문 1 : 파일 이름 확장자 AVAudioPLayer이 실패 할 수 있습니다를 변경하는 사람이 왜 알고 있나요? BTW, 내가 위에서 만든 ".M4A"파일, 나는 그래서이 문제는 파일 형식 또는이 파일 형식을 읽을 수있는 iOS 또는 맥의 무능력인지 말할 수 없다 Mac에서이 아무것도 열 수 없습니다 .
https://dl.dropboxusercontent.com/u/14939586/2013-07-08%2013-24.m4a https://dl.dropboxusercontent.com/u/14939586/2013-07-08%2010-11.aac
질문 2 :
궁금 누군가를 위해, 여기에 "는 .aac"의 사본 및 AVAudioRecorder에서 ".M4A"파일을 넣어 나는 하나 AVAudioRecorder를 설정하는 동안 결과 파일은 스테레오입니다. 왜? 무손실 인코딩 AAC-LC를 지정하는 어쨌든 거기 :
질문 3 (적어도 그 VLC 메타 데이터에 대한 말씀입니다)? 또는 AVAudioRecorder에서 낮은 수준의 API로 이동하는 경우에만 그렇게 할 수 있습니까?
이 정보는 도움이됩니다. http://stackoverflow.com/questions/4279311/how-to-record-voice-in-m4a-format –
해당 질문에 대한 대답은 완전히 잘못되었습니다. 파일은 실제 AAC 파일이 아닙니다. 그냥 m4a에 싸여 있습니다. 다른 대답 중 하나가 정확합니다. 또한 더 도움이 답변 : http://stackoverflow.com/a/12698691/86020 – mahboudz