UIWebView to Play Local and downloaded Video
I want to play downloaded video using UIWebview. I get webkiterrordomain code=204 error. but if i play video from resources folder it run perfect. //from resources folder run perfect
NSString *tempurl = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"video.mp4"];
//from downloaded file
NSString *tempurl = downloaded path;
NSURL* urlLocation = [NSURL fileURLWithPath:tempurl];
[webView loadReques开发者_运维技巧t:[NSURLRequest requestWithURL:urlLocation]];
Thank you.
Solution is here, you can play video in Embedded UIWebView.
- (void)viewDidLoad {
[super viewDidLoad];
NSString *embedHTML = @"\
<html><head>\
<style type=\"text/css\">\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\"margin:0\">\
<embed id=\"yt\" src=\"http://www.businessfactors.de/bfcms/images/stories/videos/defaultscreenvideos.mp4\" type=\"application/x-shockwave-mp4\" \
width=\"%0.0f\" height=\"%0.0f\"></embed>\
</body></html>";
webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 412.0)];
[webView setOpaque:NO];
NSString *html = [NSString stringWithFormat:embedHTML, webView.frame.size.width, webView.frame.size.height];
[webView loadHTMLString:html baseURL:nil];
[self.view addSubview:webView];
}
WebkitErrorDomain 204
just means that it would play the video on an MPInlinePlayerController
. So you just have to ignore the error and the video will play.
Generate an html. Embed your video in it. Include both the html and the video file in the project resources. Then load html from webview.
For playing local video file, you can use MPMoviePlayerController.
- (void) playVideo:(NSString *) videoName {
if ([self.fileManager fileExistsAtPath:videoName]) {
[self stopVideo];
self.videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:videoName]];
[self.videoPlayer.view setFrame:CGRectMake(0, 0, 480, 360)];
CGAffineTransform t1;
t1 = CGAffineTransformMakeScale(-1.0,1.0);
self.videoPlayer.view.layer.transform = CATransform3DMakeAffineTransform(t1);
[self.view addSubview:self.videoPlayer.view];
[self.videoPlayer setControlStyle:MPMovieControlStyleNone];
[self.videoPlayer setScalingMode:MPMovieScalingModeAspectFit];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(movieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:self.videoPlayer];
[self.videoPlayer play];
}
}
- (void)stopVideo {
if (self.videoPlayer) {
if ([self.videoPlayer playbackState] == MPMoviePlaybackStatePlaying) {
[self.videoPlayer stop];
}
[self.videoPlayer.view removeFromSuperview];
self.videoPlayer = nil;
}
}
- (void) movieFinishedCallback:(NSNotification*) aNotification {
MPMoviePlayerController *player = [aNotification object];
[[NSNotificationCenter defaultCenter]
removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:player];
[self.videoPlayer.view removeFromSuperview];
}
精彩评论