在IOS上可以用MPMoviePlayerViewController实现在线播放音频,但是当网络不理想的情况下客户体验总不是太好,所以采用了,先下载下来,然后播放。
1.下载音频
NSString *soundhttpURL = [[NSString alloc] initWithFormat:@"http://114.112.55.2:6080/audio/question/audio_"];
NSString *qid = [currentQuestion objectForKey:@"qid"];
NSString *soundURLStr = [NSString stringWithFormat:@"%@%@%@",soundhttpURL,qid,@".wav"];
NSURL *soundURL = [NSURL URLWithString:soundURLStr];
NSLog(@"soundURL:%@",soundURL);
NSDate *date = [NSDate date];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:soundURL];
NSURLResponse *response;
NSError *error;
NSData* result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error];
NSLog(@"Response expects %lld bytes", [response expectedContentLength]);
NSLog(@"Response suggested file name: %@", [response suggestedFilename]);
if ([response suggestedFilename])
self.savePath = [DEST_PATH stringByAppendingString:[response suggestedFilename]];
if (!result)
NSLog(@"Error downloading data: %@.", [error localizedDescription]);
else if ([response expectedContentLength] < 0)
NSLog(@"Error with download. Carrier redirect?");
else
{
NSLog(@"Download succeeded.");
NSLog(@"Read %d bytes", result.length);
NSLog(@"Elapsed time: %0.2f seconds.", -1*[date timeIntervalSinceNow]);
[result writeToFile:self.savePath atomically:YES];
NSLog(@"Data written to file: %@.", self.savePath);
}
[self performSelectorOnMainThread:@selector(playQuestionSound:) withObject:soundURL waitUntilDone:NO];//播放问题音频
2.播放音频
- (void) playQuestionSound:(NSURL *)soundURL {
//播放问题音频
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
NSURL *fileURL = [NSURL fileURLWithPath:self.savePath];
player = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: nil];
[fileURL release];
[player setVolume:15.0];
[player play];
}
分享到:
相关推荐
特别是针对iOS平台,开发者可能遇到一些特定的音频播放问题,比如在iOS设备上播放音频文件时没有声音。这类问题的存在,不仅影响用户体验,也可能阻碍项目进展。本知识点将针对这一问题,从技术细节和解决方法上,...
ios中audio不能直接通过audio.play()播放,需要用户在click事件或者touch事件中执行audio.play()才能播放。 ajax回调中audio.play()音乐不能正常播放。 用户点击按钮,等服务器返回数据后再播放相应的成功或失败的...
在iOS平台上,流式音频播放是一项关键的技术,它允许应用程序实时接收并播放来自网络的数据,无需将整个音频文件下载到本地。这样的实现方式对于处理大容量的音频资源,或者需要节省用户存储空间的情况非常有效。...
在iOS平台上,实时语音播放是移动应用开发中的一个重要部分,特别是在聊天、语音通话或游戏等应用场景中。PCM(Pulse Code Modulation)数据是未经压缩的原始音频数据,广泛用于语音处理。本篇文章将深入探讨如何在...
- **MOV**:Apple公司支持的一种视频格式,常用于iOS设备。 ##### 2.2 iOS SDK中的视频播放支持 - **MPMoviePlayerViewController类**:提供了一个简单的方法来播放视频,适用于iOS 4及更高版本。 - **限制**:...
"DeviceUtil"这个名字可能是指该库提供了一些设备相关的辅助工具,如检测设备型号、屏幕尺寸、系统版本等功能,以更好地适应不同的iOS设备。综合这些信息,我们可以推测这是一个全面且实用的iOS视频音频处理库。
在播放或录制音频时,可以调整声道设置,以实现特定的音频效果。 9. **错误处理**: 在处理音频时,可能会遇到各种错误,如文件不存在、权限问题、内存问题等。因此,编写良好的错误处理机制是至关重要的。 通过...
在播放完毕或不再需要时,及时释放相关资源,防止内存泄漏。 通过这个Demo,开发者可以了解如何在iOS应用中实现音频的完整生命周期管理,从录制到播放,以及相关的交互和控制。无论是对音频功能有初步认识的初学者...
在iOS设备上进行音频转换通常涉及到以下几个关键知识点: 1. **音频格式转换**:VoiceConverter能够将不同格式的音频文件,如MP3、AAC、WAV、FLAC等,转换成iOS设备更适合或者用户需要的格式。这在处理跨平台或设备...
在iOS平台上实现音频直播涉及到多个技术领域,包括音频处理、网络传输、实时通信以及用户界面设计等。以下是对"音频直播-ios"这一主题的详细解释: 1. 音频处理: - AVFoundation框架:iOS中处理音频的核心框架,...
解码过程通常由硬件或软件实现,例如在移动设备上,音频解码可能由硬件加速器完成,而在计算机上,可以使用FFmpeg等库进行软件解码。解码后的音频数据会被送入音频播放器,通过扬声器或耳机输出。 六、跨平台支持 ...
9. **适配不同设备和屏幕尺寸**:iOS设备有多种屏幕尺寸,源码中可能会包含适配不同屏幕的代码,如使用AutoLayout或者Size Classes来实现响应式布局。 10. **错误处理**:在实际开发中,音频视频播放可能会遇到各种...
在iOS平台上实现流媒体播放是一项重要的技术,它允许用户观看电影、视频和其他多媒体内容而无需等待整个文件下载完成。这得益于流媒体技术的实时传输特性,使得内容可以边下载边播放,大大提升了用户体验。以下是对...
6. **性能优化**:在iOS设备上,处理大量音频数据可能会消耗大量CPU资源。因此,优化噪声抑制算法和整体音频处理流程至关重要,以确保低延迟和高效能。 7. **测试与调试**:在实际环境中,噪声抑制的效果会受到许多...
在iOS平台上,使用FFmpeg库来播放RTSP流可以实现高效、灵活的视频播放功能,尤其是在视频监控场景中。FFmpeg是一个开源的多媒体处理框架,它包含了一系列的库,如libavcodec(编解码器)、libavformat(多媒体容器...
使用这样的工具类库,开发者可以方便地实现音频格式转换功能,确保用户能够在iOS设备上播放来自其他平台的AMR音频。 在实际开发中,除了这个工具类库,还有其他库如OpenSSL或FFmpeg也能处理音频格式转换。然而,...
10. **节能优化**:AVPlayer可以智能地管理资源,比如在设备闲置时降低能耗,这使得它在移动设备上运行更加高效。 11. **缓存策略**:开发者可以自定义URLSession的缓存策略,以提高播放性能并减少网络流量。 12. ...
9. **UI布局**:在实现视频播放界面时,需要考虑视频播放控件(如播放/暂停按钮、全屏按钮等)的布局,确保它们在不同屏幕尺寸和设备方向下都能正常显示。 10. **性能优化**:对于大型视频文件,可能需要考虑预加载...
9. **适配不同设备**:考虑到iOS设备的多样性,如iPhone、iPad以及不同的系统版本,确保音频播放代码兼容性良好。 10. **调试与测试**:在开发过程中,不断进行真机测试,确保音频在各种场景下都能正常播放,避免...
在移动设备上,考虑到存储空间和传输效率,AMR可能更为合适;而在需要高质量音频时,WAV则为首选。 这个工具类的录音功能可能利用了AVFoundation框架,这是iOS SDK中处理音频和视频的核心组件。通过AVAudioRecorder...