繁体   English   中英

从URI获取音频流并在iPhone上播放

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM