V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
therethere
V2EX  ›  程序员

懂 IOS 开发的尽量瞧瞧,现在有这么个问题

  •  
  •   therethere · 2017-04-18 11:34:34 +08:00 · 5499 次点击
    这是一个创建于 2774 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1.我们数据存储用的亚马逊 s3 , bucket 里面存储的都是视频,但是有的是有 mp4 后缀的,有的没有。这是问题 1
    2.我们用了亚马逊 cdn , http://xxx.cloudfront.net 用浏览器打开这种地址会跳转到一个 IP ,类似这样,比如文件是
    http://xxx.cloudfront.net/a_1.mp4 会跳转到 http://ip/xxx.cloudfront.net/a_1.mp4.

    然后结果就是 android 没有任何问题, IOS 那边就是播放不了,开发人员说的是 他只是把链接传给 ios 播放器,播放不了他也没办法。让服务器改成 mp4 后缀,而且不能给 cdn 地址给 ios 端,用原始地址。。。这个求个解释
    29 条回复    2017-06-09 18:00:10 +08:00
    lion9527
        1
    lion9527  
       2017-04-18 11:44:22 +08:00
    要 iOS 换个第三方播放器呗
    cevincheung
        2
    cevincheung  
       2017-04-18 11:47:06 +08:00
    分明就是不相自己再多一个步骤。
    ios 下 ffmpeg 又不是不能用。源码开放的。
    byfar
        3
    byfar  
       2017-04-18 11:53:04 +08:00
    不懂 ios 开发,不过不是要用 https?
    skylancer
        4
    skylancer  
       2017-04-18 12:26:35 +08:00
    分明就是你那个 iOS 不想干活要偷懒
    luwu1991
        5
    luwu1991  
       2017-04-18 12:43:18 +08:00 via iPhone
    不是不能播放吧,只是 iOS 现在不能用 IP 和服务器通信,必须是域名。这个是苹果的上架要求。
    DSKcpp
        6
    DSKcpp  
       2017-04-18 12:45:51 +08:00
    我的记得 AVPlayer 播放视频要有后缀,不然放不了
    用第三方可破
    therethere
        7
    therethere  
    OP
       2017-04-18 12:52:13 +08:00
    我是觉得,流媒体播放应该和后缀没关系,有点郁闷
    zyq2280539
        8
    zyq2280539  
       2017-04-18 13:13:32 +08:00
    可能跟播放器有关系吧,多试试其他播放器的框架呢
    xi_lin
        9
    xi_lin  
       2017-04-18 13:39:50 +08:00
    @therethere 你们这不是在线流媒体播放吧?不是固定的文件么?
    crashX
        10
    crashX  
       2017-04-18 13:57:04 +08:00   ❤️ 1
    ffmpeg 的授权协议很严格,楼上站着说话不腰疼的有几个完全按照协议要求开源的?
    grayon
        11
    grayon  
       2017-04-18 13:58:31 +08:00
    第三方播放器
    therethere
        12
    therethere  
    OP
       2017-04-18 14:23:29 +08:00
    自带的播放器不行,是吧?
    therethere
        13
    therethere  
    OP
       2017-04-18 14:24:33 +08:00
    都是同一个数据连接, android 就没问题, android 那边说也是用 google 自带的播放器
    beimenjun
        14
    beimenjun  
       2017-04-18 15:05:53 +08:00
    这个如果能确定自己 bucket 里的文件都是 mp4 结尾的,就在传值进去之前做下验证吧。
    onevcat
        15
    onevcat  
       2017-04-18 15:09:58 +08:00
    如果跳转之后的 http://ip/xxx.cloudfront.net/a_1.mp4 直接扔给 AVPlayer 能正确播放的话,就说明视频本身没问题,是跳转的问题咯。要是最终的视频地址也播放不了就再另说...
    onevcat
        16
    onevcat  
       2017-04-18 15:13:20 +08:00
    如果确定是 CDN 给的 Content-Type 的 header 里没有给出正确的 MIME type 的话,要是能确定所有的 request 文件类型都一致的话,可以自己加一个 Content-Type 然后再喂给 AVPlayer 就好。
    robinshi2010
        17
    robinshi2010  
       2017-04-18 15:15:38 +08:00
    虽然我不懂。但是我觉得喵神说的对。手动滑稽。
    linKnowEasy
        18
    linKnowEasy  
       2017-04-18 16:04:27 +08:00
    喵神说的对 +1.
    问题 1. 没有后缀的问题. http://ip/xxx.cloudfront.net/a_1 直接丢给播放器. 理论上播放器应该也能播放的吧. 不能的话. 应该也只能确保 bucket 都是有 mp4 后缀。
    问题 2. 如果播放器能播放 http://ip/xxx.cloudfront.net/a_1.mp4 , 让 iOS 开发人员在播放器请求 http://xxx.cloudfront.net/a_1.mp4 , 拿到 跳转的地址. 再去丢给播放器。 这个理论上应该可行吧 , (需要拦截 http 请求?。 判断 url 是否含有 ip ?)。
    Jacky001
        19
    Jacky001  
       2017-04-18 16:29:20 +08:00
    我来捣个乱, uiwebview+html5
    xdream86
        20
    xdream86  
       2017-04-18 16:39:30 +08:00
    你倒是留一个真实的 MP4 资源测试地址啊,那些待业的 iOS 开发工程师没准还可以帮你测一测
    nieyujiang
        21
    nieyujiang  
       2017-04-18 17:54:04 +08:00
    @onevcat #16 再次活捉喵神
    HelloiWorld
        22
    HelloiWorld  
       2017-04-18 17:54:24 +08:00
    #20 +1. 还有这种上班没事刷帖的=_=
    therethere
        23
    therethere  
    OP
       2017-04-18 17:55:19 +08:00
    therethere
        24
    therethere  
    OP
       2017-04-18 18:00:31 +08:00
    @onevcat ios 人员说,播放的时候不能给 avplayer 传 content-type 。。。只能传 url 。
    Shvier
        25
    Shvier  
       2017-04-18 18:19:07 +08:00
    @therethere - -感觉贵司的 iOS 人员不太了解 http 这些啊(虽然我也不是很了解), AVPlayer 确实只能传 URL ,但是在线播放一定会有 request ,喵神的意思是修改 request 里的请求内容,至于拿到 request 有很多方法,比如可以通过 AVAssetResourceLoaderDelegate 协议对 request 进行拦截巴拉巴拉。
    Shvier
        26
    Shvier  
       2017-04-18 18:31:42 +08:00
    @therethere #25 另外楼上给的链接我试了试,确实无法直接播放,抓包观察 Content-Type 是空的,下载完成存到本地,没有扩展名导致不能播放,手动添加扩展名可以播放。
    yiios
        27
    yiios  
       2017-04-18 18:49:29 +08:00   ❤️ 1
    如果只是格式问题的话 我宁愿写个方法 把这种格式过滤一下
    therethere
        28
    therethere  
    OP
       2017-04-19 10:48:21 +08:00
    @Shvier 链接确实有的是空的,有的不是 video/mp4 。我现在就是在写个脚本,批量修改 s3 里面的 content-type
    mooczz
        29
    mooczz  
       2017-06-09 18:00:10 +08:00
    所以,讨论的半天还是没结果,最合理的是用第三方播放器,嗯,我也遇到了这个问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1008 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:01 · PVG 04:01 · LAX 12:01 · JFK 15:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.