我想从网址获取音频流并在iPhone上播放。不幸的是,只有C#示例如何播放该流,但我需要在iPhone框架中实现Objective C。我试过自己使用不同的音频框架,但都没有成功。这就是C#中的内容:
response = httpWebRequest.GetResponse();
using (Stream stream = response.GetResponseStream())
{
using (SoundPlayer player = new SoundPlayer(stream))
{
player.PlaySync();
}
}
我应该在目标C中做什么来从该网址获取流音频?在那个URL我没有mp3文件或其他东西,我只是得到一个流。可能我必须以某种方式将该流下载到iPhone音频文件,然后播放它以摆脱滞后。
我试过了:
AVPlayer *player = [AVPlayer playerWithURL:url];
[player play];
而且:
AVAudioPlayer *theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL: url error:nil];
[theAudio setVolume :0.50]; //setting the volume
[theAudio play];
都没有奏效。 我测试了我的网址,它在浏览器中运行良好。
这是有效的代码:
NSData *_objectData = [NSData dataWithContentsOfURL:url];
NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData:_objectData error:&error];
audioPlayer.numberOfLoops = 0;
audioPlayer.volume = 1.0f;
[audioPlayer prepareToPlay];
if (audioPlayer == nil)
NSLog(@"%@", [error description]);
else
[audioPlayer play];
答案 0 :(得分:14)
NSString* resourcePath = url; //your url
NSData *_objectData = [NSData dataWithContentsOfURL:[NSURL URLWithString:resourcePath]];
NSError *error;
app.audioPlayer = [[AVAudioPlayer alloc] initWithData:_objectData error:&error];
app.audioPlayer.numberOfLoops = 0;
app.audioPlayer.volume = 1.0f;
[app.audioPlayer prepareToPlay];
if (app.audioPlayer == nil)
NSLog(@"%@", [error description]);
else
[app.audioPlayer play];
答案 1 :(得分:14)
嘿,我遇到了无线电应用的音频流问题。我找到了答案,但他们没有用。 AVAudioPlayer不是这里使用的类。使用NSData对象下载URL的内容不是解决方案,因为它下载内容然后代码进一步执行。它类似于下载一个mp3,然后在播放器上本地播放。
[NSData dataWithContentsOfURL:[NSURL URLWithString:resourcePath]]; //Downloads the contents of the url and in case of radio the url's content is unlimited. The program gets frozen on executing this.
而是使用AVPlayer类。
此代码适用于我的广播应用
AVPlayer *objAVPlayer = [[AVPlayer alloc] initWithURL:url];
[objAVPlayer play];
此代码不会下载网址上的内容,但会在收到信息时播放信息流。
答案 2 :(得分:8)
查看AVPlayer类,AVFoundation框架的一部分......这是用于流音频的objective-c(iOS)类。
答案 3 :(得分:0)
MPMoviePlayerController *player;
player = [[MPMoviePlayerController alloc] init] ;
player.view.frame = CGRectMake(0, 0, 0, 0);
player.movieSourceType = MPMovieSourceTypeStreaming;
player.view.hidden = YES;
[self.view addSubview: [wikiMusicPlayer view]];
NSString *address = Your URL;
address = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:address];
[wikiMusicPlayer setContentURL:url];
[wikiMusicPlayer prepareToPlay];
[wikiMusicPlayer setShouldAutoplay: NO];
[wikiMusicPlayer play];