2016-09-17 8 views
0

ビューの背景に短いビデオループがある場合は、アプリケーションを作成する必要があります。これらのループの長さは通常10〜30秒です。私はパフォーマンスとメモリの経済面で何が良いだろうと思っていた(アプリケーションストアからダウンロードしたときにループをアプリケーションにバンドルする必要があります)iOS背景ビデオループGIF UIWebviewまたはVideoPlayer

a)動画のアニメーション化された.gifがループする背景としてUIWebviewを使用します b)にM4Vのようなファイル C)私はまだ

は、オーディオがあるであろうと考えられていないいくつかの選択肢を背景として、いくつかのVideoPlayerView(AVPlayer)を使用しますが、しかし、オーディオ、ビデオ

答えて

0
にリンクされていません
- (void)playIntroVideo 
{ 
// NSBundle *bundle = [NSBundle mainBundle]; 
// // NSString *moviePath = iPadDevice ? [bundle pathForResource:@"IntroVideo" ofType:@"mp4"] : [bundle pathForResource:@"IntroVideo_iPhone" ofType:@"mp4"]; 
// NSString *moviePath = [bundle pathForResource:@"IntroVideo" ofType:@"mp4"]; 
// NSURL *movieURL = [NSURL fileURLWithPath:moviePath]; 

CGRect frame = self.movieView.frame; 
frame.origin.x=-200; 
frame.size.width+=200; 

AVAsset *avAsset = [AVAsset assetWithURL:movieURL]; 

AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:avAsset]; 
gen.appliesPreferredTrackTransform = YES; 
CMTime time = CMTimeMakeWithSeconds(0.0, 600); 
NSError *error = nil; 
CMTime actualTime; 

CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error]; 
UIImage *selectedImage = [[UIImage alloc] initWithCGImage:image]; 
CGImageRelease(image); 

UIImageView *img = [[UIImageView alloc] initWithImage:selectedImage]; 
img.frame = frame; 
[self.movieView addSubview:img]; 

AVPlayerItem *avPlayerItem =[[AVPlayerItem alloc]initWithAsset:avAsset]; 
self.avplayer = [[AVPlayer alloc]initWithPlayerItem:avPlayerItem]; 
avPlayerLayer =[AVPlayerLayer playerLayerWithPlayer:self.avplayer]; 
[avPlayerLayer setVideoGravity:AVLayerVideoGravityResize]; 

if (iPhoneDevice) 
    [avPlayerLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; 

[avPlayerLayer setFrame:frame]; 

[self.movieView.layer addSublayer:avPlayerLayer]; 

[self.avplayer seekToTime:kCMTimeZero]; 

// Not affecting background music playing 
NSError *sessionError = nil; 

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&sessionError]; 
[[AVAudioSession sharedInstance] setActive:YES error:&sessionError]; 

// [self.avplayer setVolume:0.0f]; 
[self.avplayer setActionAtItemEnd:AVPlayerActionAtItemEndNone]; 

} 
- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
[self playIntroVideo]; 
} 
- (void)viewWillAppear:(BOOL)animated 
{ 
[super viewWillAppear:animated]; 
[self.avplayer play]; 
} 
- (void)viewWillDisappear:(BOOL)animated 
{ 
[super viewWillDisappear:animated]; 

[self.avplayer pause]; 
// self.avplayer = nil; 

[[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:nil]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
[super viewDidAppear:animated]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:[self.avplayer currentItem]]; 

} 

- (void)playerItemDidReachEnd:(NSNotification *)notification 
{ 
AVPlayerItem *p = [notification object]; 
[p seekToTime:kCMTimeZero]; 
} 
関連する問題