V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
dudusprinkler
V2EX  ›  iDev

请问 UIWebView 要如何才能播放优酷的视频? [上一个请无视,手贱没写完点了创建]

  •  1
     
  •   dudusprinkler · 2016-01-15 05:37:28 +08:00 · 6461 次点击
    这是一个创建于 3026 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人新手,求教各位大神。。

    (弱弱问一句,这里可以贴图吗?)
    我使用 UIWebView load 一个 html 字符串,中间加了优酷的通用代码,就像下面这样的

    <iframe height=498 width=510 src="http://player.youku.com/embed/XNzIyNTU5MTgw" frameborder=0 allowfullscreen></iframe>

    可以正常显示,但是不能接受点击事件,具体就是能够正确显示预览图,并且中间有一个播放按钮,但是点击播放却没反应。于是考虑修改 UA ,改成 nexus 6 5.11 ,然后可以点击了。但是仍然有问题,就是点击完,可能会播放一到两段 youku 的广告,播放完直接显示“抱歉,视频出错,请刷新”。或者就是直接报错。

    在桌面端也测试了一下,直接用 chrome 打开同样的 html 文件。不能接受点击。用 chrome 的开发者工具,模拟安卓端,可以正常播放,模拟 iphone6 ,不能接受点击。

    真机上,安卓真机测试没问题, 6s 测试和模拟器结果相同。


    ----------------------------------------------------------------------------------------


    顺便又测了土豆和腾讯的通用代码
    土豆:
    <iframe src="http://www.tudou.com/programs/view/html5embed.action?type=2&code=rlqv8bERBuI&lcode=Lqfme5hSolM&resourceId=0_06_05_99" allowtransparency="true" allowfullscreen="true" allowfullscreenInteractive="true" scrolling="no" border="0" frameborder="0" style="width:480px;height:400px;"></iframe>

    腾讯:
    <iframe frameborder="0" width="640" height="498" src="http://v.qq.com/iframe/player.html?vid=w0019xxrctf&tiny=0&auto=0" allowfullscreen></iframe>

    不管该不该 UA 都可以正常播放。
    17 条回复    2016-01-16 21:34:42 +08:00
    Elethom
        1
    Elethom  
       2016-01-15 07:42:30 +08:00 via iPhone   ❤️ 1
    UIWebView 默認的 UA 是不包含「 Safari 」的,手動修改一下就好。
    yeyeye
        2
    yeyeye  
       2016-01-15 14:02:21 +08:00 via Android
    主题发出来了是可以编辑的 没必要再发一个
    dudusprinkler
        3
    dudusprinkler  
    OP
       2016-01-15 14:29:36 +08:00
    @yeyeye 我试了编辑,等我写完给我提示,你不能编辑此帖。。
    yeyeye
        4
    yeyeye  
       2016-01-15 14:34:14 +08:00
    @dudusprinkler 哦哦 那就是超过时间或者有人回复了……
    dudusprinkler
        5
    dudusprinkler  
    OP
       2016-01-15 14:35:11 +08:00
    @Elethom 你好,感谢回复,手动修改成这个
    Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D41 Safari/601.1
    问题依旧
    ostholz
        6
    ostholz  
       2016-01-15 15:36:54 +08:00
    没弄过, 只是猜测一下. youku 的视频支持 HTML 5 视频播放吗? 还是 Flash?
    如果是 Flash, 肯定播放不了吧.
    dudusprinkler
        7
    dudusprinkler  
    OP
       2016-01-15 15:49:44 +08:00
    @ostholz 当然是 html5 ,用 webview 直接加载优酷的网页能放。。自己定义的 html 代码加入优酷的代码却不行
    dudusprinkler
        8
    dudusprinkler  
    OP
       2016-01-15 16:33:30 +08:00
    又试了一下,用 9.2 模拟器加载桌面上的 html 文件,可以正常播放,看来是使用 webView 的姿势不对
    dudusprinkler
        9
    dudusprinkler  
    OP
       2016-01-15 16:41:58 +08:00
    发现每次报“抱歉,视频出错,请刷新”错误,都会 提示一下问题。。感觉这个是关键。百度 google 之,无果。
    [AVAssetResourceLoadingRequest finishLoading] was sent to an instance of AVAssetResourceLoadingRequest that was already finished. Ignoring.
    loveuqian
        10
    loveuqian  
       2016-01-15 16:55:46 +08:00 via iPhone
    试下 wkwebview ?
    wadahana
        11
    wadahana  
       2016-01-15 22:29:11 +08:00
    youku 的视频检查 cookie, 抓包看看是不是哪个请求没有带 cookie

    上个月我们刚遇到, 我们的 APP 通过串改 url 劫持流量,导致播放器用了串改后的 url 在 CookieStorage 里拿不到 cookie ,现象
    wadahana
        12
    wadahana  
       2016-01-15 22:29:36 +08:00
    现象跟你这个差不多。
    dudusprinkler
        13
    dudusprinkler  
    OP
       2016-01-15 23:38:20 +08:00
    @loveuqian 试了一下,貌似和 UIWebView 差不多,还是没法放
    dudusprinkler
        14
    dudusprinkler  
    OP
       2016-01-16 10:29:18 +08:00 via iPhone
    @wadahana 多谢提醒,我去试试看
    wadahana
        15
    wadahana  
       2016-01-16 10:40:15 +08:00
    先随便加载一个 youku 正常的视频页面,再加载你的页面, 即可播放,
    移动端的视频是 hls 防盗链视频源检查 cookie ,没有 cookie m3u8 请求返回的是空,所以播放器没反应。
    dudusprinkler
        16
    dudusprinkler  
    OP
       2016-01-16 21:32:04 +08:00
    @wadahana 多谢指点,你的方法确实是正确的,我试了一下,有效果。感谢答疑!
    dudusprinkler
        17
    dudusprinkler  
    OP
       2016-01-16 21:34:42 +08:00
    之前说安卓真机可以直接播放,今天又测了一下,也和 ios 一样的问题,优酷的视频会报错。 chrome 模拟安卓一直可以,但毕竟只是模拟器,还是以真机为准。

    总结一下,就是优酷播放视频确实如 @wadahana 所说的那样,要 cookie 。试了他的方法,确实有效。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1092 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 18:41 · PVG 02:41 · LAX 11:41 · JFK 14:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.