2

ビデオ ストリーム (http プロトコル、MP4 形式) に AVQueuePlayer(AVPlayer) を使用しています。そして私のコードは(AV Foundation Programming Guideを参照)

AVURLAsset *asset = [AVAsset assetWithURL:movieUrl];
NSArray *keys = [NSArray arrayWithObject:@"playable"];
[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^() {
   dispatch_async(dispatch_get_main_queue(), ^{
    NSError *error = nil;
            AVKeyValueStatus status = [asset statusOfValueForKey:@"playable" error:&error];
            switch (status) {
                case AVKeyValueStatusLoaded: {
                    self.movieItem = [AVPlayerItem playerItemWithAsset:asset];
                    [self.player insertItem:self.movieItem afterItem:nil];
                }
                case AVKeyValueStatusFailed: {
                    break;
                }
                case AVKeyValueStatusCancelled: {
                    break;
                }
                default:
                    break;
            }
        });
    }];

そして、このような再生のために AVPlayer.status を観察します

switch (status) {
    case AVPlayerItemStatusUnknown:
        break;
    case AVPlayerItemStatusReadyToPlay:
        NSLog(@"READY TO PLAY");
            [myPlayer play];
        break;
    case AVPlayerItemStatusFailed:
        break;
    default:
        break;
}

これらのコードはうまく機能しています。しかし、監視ツール(フィドラーなど)でネットワークトラフィックとリクエストの使用状況を監視していると、映画のURLのリクエストとデータのロードが重複する問題がいくつか見つかりました。

そして、ムービー データの読み込みを停止しようとしました (プレーヤーを nil またはプレーヤー removeAllItems に設定)。しかし、機能していません。

動画データの読み込み方法は正しかったのか、読み込みを止めるにはどうすればよいのか。

4

0 に答える 0