iphone - 鳴ら - web audio api




URIからオーディオストリームを取得してiPhoneで再生する (3)

URLからオーディオストリームを取得してiPhoneで再生したいです。 残念ながら、そのストリームを再生する方法のC#の例しかありませんが、iPhoneフレームワークでObjective Cを実現する必要があります。 私は自分自身でさまざまなオーディオフレームワークを使用しようとしましたが、すべて失敗しました。 これはC#の内容です。

response = httpWebRequest.GetResponse();
            using (Stream stream = response.GetResponseStream())
            {
                using (SoundPlayer player = new SoundPlayer(stream))
                {
                    player.PlaySync();
                }
            }

そのURLからストリームオーディオを取得するには、目的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];

どちらもうまくいきませんでした。 私は私のURLをテストしました、それはブラウザでうまくいきます。

これはうまくいったコードです:

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];

AVFoundationフレームワークの一部であるAVPlayerクラスをAVPlayerください。これはストリーミングオーディオに使用するObjective-C(iOS)クラスです。


ちょっと私はラジオアプリケーションのためのオーディオストリーミングのこの問題に直面しました。 私は答えを探しましたが、うまくいきませんでした。 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];




audio