沒有自己的流媒體伺服器,又想在app中用原生視訊播放器MPMoviePlayerController将視訊插入到界面,在界面可以直接播放,或者全屏播放,可以通過以下方法實作
先建立原生播放器
_moviePlayer = [[MPMoviePlayerController alloc] init];
_moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
_moviePlayer.shouldAutoplay = NO;
_moviePlayer.view.frame = CGRectMake(0, 0, HX_SCREEN_WIDTH, 200);
[self.scrollView addSubview:_moviePlayer.view];
然後請求優酷等視訊網頁加載資料
NSURL *fileURL = [NSURL URLWithString:<span style="background-color: rgb(240, 240, 240);">@"你要提取流媒體位址的優酷等網頁"</span>];
NSURLRequest *request = [NSURLRequest requestWithURL:fileURL];
UIWebView *webView = [[UIWebView alloc]init];
webView.delegate = self;
[webView loadRequest:request];
然後通過實作UIWebView的委托方法:
#pragma mark - UIWebViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *lJs = @"document.documentElement.innerHTML";
NSString *lHtml = [webView stringByEvaluatingJavaScriptFromString:lJs];
NSLog(@"html内容:%@",lHtml);
//上面隻是列印資訊供參考,下面才是提取流媒體
// NSString *lJs2 = @"(document.getElementsByTagName(\"video\")[0]).getElementsByTagName(\"source\")[0].src"; //qiyi
NSString *lJs2 = @"(document.getElementsByTagName(\"video\")[0]).src"; // youku,tudou,ku6 ,souhu
NSString *lm3u8 = [webView stringByEvaluatingJavaScriptFromString:lJs2];
NSLog(@"video source:%@",lm3u8);
// 加載到原生播放器播放
NSURL *movieUrl = [NSURL URLWithString:lm3u8];
_moviePlayer.contentURL = movieUrl;
[_moviePlayer prepareToPlay];
}
說明:webView要add到你的視圖中去,否則它是永遠不會去加載請求的;