使用苹果原生视频播放器MPMoviePlayerController播放来自优酷等网页的视频

没有自己的流媒体服务器,又想在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到你的视图中去,否则它是永远不会去加载请求的;

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 11:13:39

使用苹果原生视频播放器MPMoviePlayerController播放来自优酷等网页的视频的相关文章

ios 视频播放器MPMoviePlayerController

这个东西和之前的音频播放差不多, 也是先需要导入系统框架MediaPlayer.framework 才能使用到MPMoviePlayerController 的文件中导入相应的头文件 初始化:这里就有些不一样了MPMoviePlayerController是可以通过远程url初始化的, 例如: MPMoviePlayerController *moviePlayer = [ [ MPMoviePlayerController alloc]initWithContentURL:[NSURL url

ios系统视频播放器MPMoviePlayerController应用遇到的坑

最近在做视频播放时应用系统MPMoviePlayerController播放器播放视频,发现点击快进快退会出现黑屏现象,并且点击完成按钮也不会返回,代码以及界面如下所示: NSURL *url=[self getNetworkUrl]; _moviePlayer=[[MPMoviePlayerController alloc]initWithContentURL:url]; _moviePlayer.view.frame=CGRectMake(0, 0, kScreenWidth, kScree

C#制作视频播放器-player播放器组件

楼主的地址是土豆的地址,本地地址也是可以的. 好了,这时候我们运行,在textbox中添加你要播放视频的地址,音乐地址也是可以的,写好地址后,点击按钮,程序自己就播放了,如图: 现在大家看到,视频大小是跟播放器不对称的,这时我们可以修改视频的分辨率, 具体参考axWindowsMediaPlayer1控件属性介绍:属性/方法名: 说明: [基本属性] URL:String; 指定媒体位置,本机或网络地址 uiMode:String; 播放器界面模式,可为Full, Mini, None, Inv

jqm视频播放器,html5视频播放器,html5音乐播放器,html5播放器,video开发demo,html5视频播放示例,html5手机视频播放器

最近在论坛中看到了很多实用html5开发视频播放,音乐播放的功能,大部分都在寻找答案.因此我就在这里做一个demo,供大家相互学习.html5开发越来越流行了,而对于视频这一块也是必不可少的一部分.如何让你的网站占据优势,就要看你的功能和用户体验了.html5对video还是做了很多优惠的东西,我们使用起来很得心应手. 在过去 flash 是网页上最好的解决视频的方法,截至到目前还算是主流,像那些优酷之类的视频网站.虾米那样的在线音乐网站,仍然使用 flash 来提供播放服务.但是这种状况将会随

最简单的基于FFMPEG+SDL的视频播放器:拆分-解码器和播放器

本文补充记录<最简单的基于FFMPEG+SDL的视频播放器>中的两个例子:FFmpeg视频解码器和SDL像素数据播放器.这两个部分是从视频播放器中拆分出来的两个例子.FFmpeg视频解码器实现了视频数据到YUV数据的解码,而SDL像素数据播放器实现了YUV数据的显示.简而言之,原先的FFmpeg+SDL视频播放器实现了: 视频数据->YUV->显示器 FFmpeg视频解码器实现了: 视频数据->YUV SDL像素数据播放器实现了: YUV->显示器 FFmpeg视频解码

手把手教你做视频播放器(一)

前言 通过"计算器"应用我们已经熟悉了安卓应用开发的大致流程,具备了开发的初步知识. 接下来,我们将开始制作一个"视频播放器"应用,进一步加深对程序开发的学习. 当完成这个"视频播放器"应用后,大家就能够独立开发一类稍微复杂点的安卓应用了. 本文针对的读者是: 对安卓开发有了初步认识,但还没有什么经验的新人: 对已有的安卓开发经验没有系统化整理的开发者: 在开始以前,假设各位已经做好了如下准备: 一台开发用笔记本电脑,并搭建好了开发环境: 一部安

手把手教你做视频播放器(五)

第7节 竖屏的播放界面 播放视频的功能放在一个单独的Activity当中.我们将为它们设置横竖屏两种布局. 在竖屏的时候,上半部分播放视频,下半部分显示视频信息: 在设备旋转成横屏的时候,视频进行全屏播放: 7.1 启动视频播放界面 当点击视频列表的视频项时,就启动播放器播放对应的视频.这里我们要创建一个名字叫做VideoPlayer的Activity,用它来完成视频播放的任务. 另外,还要为ListView添加一个数据项点击时的监听函数, 实现ListView的OnItemClickListe

优酷视频下载|优酷播放器下载

优酷网从上周开始,全站视频已经开始完美支持iPad和iPhone 4的在线视频播放服务.采用HTML5和HTTP Live Streaming技术,对苹果iOS系统实现全面的支持,并达到和PC上一样流畅而清晰的体验.这个举动势必掀起国内各大视频网站对HTML5支持的新高潮,同时对于为数众多的iPhone 4和iPad用户来说,绝对是个振奋人心的好消息.优酷视频下载链接软件介绍优酷视频是一个很好的视频软件在这个软件上支持在线和本地两种播放方式优酷中有视频的推荐和视频的搜索播放下载等很多的强大的功能

android 使用WebView 支持播放优酷视频,土豆视频

看了很多文章和所谓的解决android WebView播放优酷,土豆等视频的办法,都是什么 setPluginsEnabled,在android 4.x之后都不好使,压根就没这函数,因为android 4.x 都去除了flash的支持.就这东西弄的我折腾了半天时间,现在的网站都是采集复制,浪费时间. 只有自己操刀了, 下面给出我的解决办法, 1. 修改AndroidManifest.xml 在Application节点上增加 ? 1 android:hardwareAccelerated="tr