jor*_*rik 1 iphone objective-c nsurl nstimer mpmoviewcontroller
我已在30秒内成功停止了视频.但我无法解雇 MP MovieViewController,我想停止缓冲活动.我用过这段代码......
视频播放代码:
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Pungi" ofType:@"mp4"]];
self.movie = [[MPMoviePlayerController alloc] initWithContentURL:url];
self.movie .controlStyle = MPMovieControlStyleEmbedded;
[ self.movie play];
[self.view addSubview:self.movie.view];
[self.movie setFullscreen:YES animated:YES];
self.movie.initialPlaybackTime = 0.5;
[NSTimer scheduledTimerWithTimeInterval:15.0
target:self
selector:@selector(stopVideo)
userInfo:nil
repeats:NO];
Run Code Online (Sandbox Code Playgroud)
stopVideo:
[self.movie stop];
[self.movie.view removeFromSuperview];
[self.movie release];
Run Code Online (Sandbox Code Playgroud)
把你MPMoviePlayerController放在一个单独的类中并加载它:
MoviePlayerViewController.h
#import <MediaPlayer/MediaPlayer.h>
@interface MoviePlayerViewController : UIViewController
@end
Run Code Online (Sandbox Code Playgroud)
MoviePlayerViewController.m
#import "MoviePlayerViewController.h"
MPMoviePlayerViewController *movieController;
@interface MoviePlayerViewController ()
@end
@implementation MoviePlayerViewController
- (void)willEnterFullscreen:(NSNotification*)notification {
NSLog(@"willEnterFullscreen");
}
- (void)enteredFullscreen:(NSNotification*)notification {
NSLog(@"enteredFullscreen");
}
- (void)willExitFullscreen:(NSNotification*)notification {
NSLog(@"willExitFullscreen");
}
- (void)exitedFullscreen:(NSNotification*)notification {
NSLog(@"exitedFullscreen");
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)playbackFinished:(NSNotification*)notification {
NSNumber* reason = [[notification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
switch ([reason intValue]) {
case MPMovieFinishReasonPlaybackEnded:
[self dismissModalViewControllerAnimated:YES];
break;
case MPMovieFinishReasonPlaybackError:
break;
case MPMovieFinishReasonUserExited:
[self dismissModalViewControllerAnimated:YES];
break;
default:
break;
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterFullscreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willExitFullscreen:) name:MPMoviePlayerWillExitFullscreenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enteredFullscreen:) name:MPMoviePlayerDidEnterFullscreenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitedFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
NSString *videoName = @"Videoname";
NSString *filepath = [[NSBundle mainBundle] pathForResource:videoName @"movietype"];
NSURL *fileURL = [NSURL fileURLWithPath:filepath];
movieController = [[MPMoviePlayerViewController alloc] initWithContentURL:fileURL];
[movieController.view setFrame:CGRectMake(0, -20, 320, 480)];
[self.view addSubview:movieController.view];
[movieController.moviePlayer play];
}
Run Code Online (Sandbox Code Playgroud)
ViewController.m
MoviePlayerViewController *player = [[MoviePlayerViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:player animated:YES];
Run Code Online (Sandbox Code Playgroud)
它能做什么:
MoviePlayerViewController是一个自定义类,用于加载MPMoviePlayerController视频.在viewDidLoad方法中(或任何你想要的地方)你加载MoviePlayerViewController.([self presentModalViewController:animated])....这样做的好处是,你的主类没有重载moviecrap/definitions,你可以轻松地解除MoviePlayerViewController它在完成时使用Notifications来检查它是否已经停止.如果它已经停止:
[self dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
6469 次 |
| 最近记录: |