[英]Get an audio stream from URI and play it on iPhone
我想从URL获取音频流并在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];
嘿,我遇到了无线电应用的音频流问题。 我找到了答案,但他们没有用。 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];
此代码不会下载URL中的内容,但会在接收时播放流。
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];
查看AVPlayer类,AVFoundation框架的一部分......这是用于流音频的objective-c(iOS)类。
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];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.