[iOS 개발] AFNetworking 서버에 음성 파일 업로드 (.mp3)
6236 단어 Objective-Ciosmp3파일 업로드
1. 비즈니스 환경
로컬 녹음 파일을caf 파일은 네트워크를 통해 서버에 업로드되고 서버는 이 파일을 로 저장합니다.mp3 형식.
2. 사고방식 실현
(1) AVAudioRecorder를 사용하여 로컬에 녹음 파일 저장
(2) AFNetworking으로 로컬을 업로드합니다.서버에 caf 파일
(3) AFNetworking의 minetype 설정과 AVAudioRecorder의 매개 변수 설정을 주의하십시오. 그렇지 않으면 오디오 프레임과 업로드에 실패할 수 있습니다.
3. 구체적인 코드 실현
(1) 녹음 도구 만들기
/*
* AVAudioRecorder
*/
- (AVAudioRecorder *)recorder {
if (!_recorder) {
// 1.
NSString *filePath = [path stringByAppendingPathComponent:@"ihefe_ichat.caf"];
self.recordFileUrl = [NSURL fileURLWithPath:filePath];
NSLog(@"filePath: %@", filePath);
// 2.
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];
// AVFormatIDKey==kAudioFormatLinearPCM
[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
// (Hz) :AVSampleRateKey==8000/44100/96000( ), 11025 mp3
[recordSetting setValue:[NSNumber numberWithFloat:11025.0] forKey:AVSampleRateKey];
// 1 2 , mp3
[recordSetting setValue:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey];
// 8、16、24、32
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
//
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVEncoderAudioQualityKey];
// 3. AVAudioRecorder
_recorder = [[AVAudioRecorder alloc] initWithURL:self.recordFileUrl settings:recordSetting error:NULL];
_recorder.delegate = self;
_recorder.meteringEnabled = YES;
[_recorder prepareToRecord];
}
return _recorder;
}
(2) AFNetworking 파일 업로드
/*
* .mp3
*/
- (void)uploadFile
{
NSURL *mp3Url = [NSURL URLWithString:@" "];// .caf
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"image/jpeg", nil];
NSMutableDictionary *para = [NSMutableDictionary dictionary];
para[@"action"] = @"999";
[manager POST:@"http://push.hjourney.cn/api.php?c=Index2" parameters:para constructingBodyWithBlock:^(id _Nonnull formData) {
// application/octer-stream audio/mpeg video/mp4 application/octet-stream
/* url :
* name :
* fileName :
* mimeType : [mp3 : application/octer-stream application/octet-stream] [mp4 : video/mp4]
*/
[formData appendPartWithFileURL:mp3Url name:@"video" fileName:@"xxx.mp3" mimeType:@"application/octet-stream" error:nil];
} progress:^(NSProgress * _Nonnull uploadProgress) {
float progress = 1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount;
NSLog(@" ----- %f",progress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@" %@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@" %@",error);
}];
}
Demo 다운로드 주소: Demo_RecordAndPlayVoice
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PreferenceBundle에서 오른쪽 상단에 Respring 버튼을 클릭합니다.만나서 반갑습니다, Minazuki라고합니다. 프로필 이름 : Minazuki_dev Twitter : Repo : 아직 중학생이므로 말이 이상한 곳이 있습니다만 용서해 주세요… 🙏 theos (Mac이든 단품이든 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.