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 folde
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];
}
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.
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.