1

タイトルの通り、インスタンスを使ってiOSOS Xの両方でインターネットラジオを生配信しようとしています。AVPlayerシンプルな方法ですべてが期待どおりに機能しますplayer = [AVPlayer playerWithURL:URL];

アプリを使用しているときに、ストリームが 15 分後に停止することに気付きました。問題は、注意が払われなかったことです。

[player addObserver:self forKeyPath:@"status" options:0 context:nil];
[player addObserver:self forKeyPath:@"rate" options:0 context:nil];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if (object == player) {
        if ([keyPath isEqualToString:@"status"]) {
            NSLog(@"status -> %ld", player.status);
        }
        if ([keyPath isEqualToString:@"rate"]) {
            NSLog(@"rate -> %f", player.rate);
        }
    }
}

両方の値が切り替わりました1が、オーディオの再生が停止しても二度と切り替わることはありません。iOS では、右上の再生アイコンがなくなりましたが、player.rate の値が変わらないため、アプリはまだ音声が再生されていると認識しています。

最初はストリームだと思ったので、5by5 と twit の他のストリームを試してみましたが、同じことが起こりました。

それから私はそれが私の接続だと思ったので、ストリームが始まった後、私は接続をオフにしましAVPlayerItemDidPlayToEndTimeNotificationた.

これをテストするのにしばらく時間がかかりました。

なぜこれが起こっているのでしょうか?さらに重要なことは、それを修正する方法は?

4

1 に答える 1

1

さて、 is 1player.currentTimeの間、 がスタックしていることに気付きました。したがって、少なくとも OS XI ではそれを追跡し、スタックした場合にストリームを再開できます。player.rate

2013-04-30 12:49:07.730 Radio[60315:303] rate -> 1.000000
2013-04-30 12:49:07.731 Radio[60315:303] status -> 1
2013-04-30 13:09:04.154 Radio[60315:303] Stuck at 1195 x 1
2013-04-30 13:09:05.155 Radio[60315:303] Stuck at 1195 x 2
2013-04-30 13:09:06.155 Radio[60315:303] Stuck at 1195 x 3
2013-04-30 13:09:07.155 Radio[60315:303] >> Stuck! Restart stream <<
2013-04-30 13:09:09.426 Radio[60315:303] rate -> 1.000000
2013-04-30 13:09:09.426 Radio[60315:303] status -> 1
于 2013-04-30T06:28:21.197 に答える