6

こんにちは私はAVPlayerを使用して、フレームごとにゆっくりとビデオを再生しています。そのためにこのコーディングを使用しました。ビデオを再生できませんでした。私の問題に注意してください。

UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 440)];
newView.backgroundColor = [UIColor yellowColor];

NSString *videoName = [fileNameArray objectAtIndex:indexPath.section];
NSString *url = [Utilities documentsPath:[NSString stringWithFormat:@"OSC/%@/%@.mov",videoName,videoName]];

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:url]];
//AVPlayer *avPlayer = [[AVPlayer playerWithURL:[NSURL URLWithString:url]] retain];
AVPlayer *avPlayer = [[AVPlayer playerWithPlayerItem:playerItem] retain];
AVPlayerLayer *avPlayerLayer = [[AVPlayerLayer playerLayerWithPlayer:avPlayer] retain];

avPlayerLayer.frame = self.view.frame;
[newView.layer addSublayer:avPlayerLayer];
[self.view addSubview:newView];
[avPlayer play];

avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; 

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(playerItemDidReachEnd:)
                                             name:AVPlayerItemDidPlayToEndTimeNotification
                                           object:[avPlayer currentItem]];
4

2 に答える 2

11

ローカルファイルを使用する[NSURL fileURLWithPath:url]ため、NSStringをNSURLに変換するために使用することをお勧めします。したがって、コードを次のように変更します。

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:url]];
于 2013-03-10T12:59:46.443 に答える
4

フレームごとの速度についてはわかりませんが、実行する必要のないいくつかのことを実行しています。iPhoneのドキュメントでは、Appleの人たちはメモリ管理を完全に台無しにして、必要以上に複雑にしているので、それを機能させる重要なことを説明します。

まず、レイヤーではなく、プレーヤーを保持します。理由がわからない場合は、本またはビューマニュアルをお読みください。(同音異義語スタイルのタイプミスでいっぱいですが、厚い本を購入するよりも簡単です)。

2つ目は、レイヤーをキャストせずにsetPlayer:を使用したことです。正確な行は、Appleのドキュメント内にあります。タイプキャストを使用してself.layerを変換する必要があります。

于 2011-06-03T14:56:43.090 に答える