UIWebView to Play Local and downloaded Video

后端 未结 4 1985
一向
一向 2020-12-10 21:51

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

相关标签:
4条回答
  • 2020-12-10 22:17

    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];
    

    }

    0 讨论(0)
  • 2020-12-10 22:20

    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.

    0 讨论(0)
  • 2020-12-10 22:22

    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];
    

    }

    0 讨论(0)
  • 2020-12-10 22:39

    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.

    0 讨论(0)
提交回复
热议问题