当前位置: 首页 > 知识库问答 >
问题:

iOS流视频从谷歌驱动器Swift

卫弘义
2023-03-14

我正在构建一个iOS应用程序,来自Google的Stream视频驱动视频链接如下所示

html" target="_blank">https://drive.google.com/file/d/0B2Kri7-TaAFJSlJ4UTJuSElGamM/preview

从上面的URL获取流链接的唯一方法是解码webView超文本标记语言

let myURLString = "https://drive.google.com/file/d/0B2Kri7-TaAFJSlJ4UTJuSElGamM/preview"

    if let myURL = NSURL(string: myURLString) {

        do {
            let myHTMLString = try String(contentsOfURL: myURL, encoding: NSUTF8StringEncoding)
            print("HTML : \(myHTMLString)")

        } catch {
            print("Error : \(error)")
        }
    } else {
        print("Error: \(myURLString) doesn't  URL")
    }

之后,我得到了webView的超文本标记语言

问题是:

我在超文本标记语言中寻找的是这个“fmt_stream_map”,它包含了我也需要的所有流式链接流式传输视频,但我不知道如何访问它并从中获取蒸汽链接。

PS:我正在与一位Android开发人员合作,他告诉我他使用这种方法来解决问题,但他无法向我解释,我也不懂java

共有1个答案

赵元白
2023-03-14

我使用以下方法修复了问题:

        let myURLString = "https://drive.google.com/file/d/0B1XhqDeOfqG7UWZSaG1ZbFFhSzQ/preview"

    if let myURL = NSURL(string: myURLString) {

        do {
            let myHTMLString = try String(contentsOfURL: myURL, encoding: NSUTF8StringEncoding)

            let t = myHTMLString

            if let rangeOfZero = t.rangeOfString("plid", options: NSStringCompareOptions.BackwardsSearch) {

                let suffix = String(t.characters.suffixFrom(rangeOfZero.endIndex))

                //    print(suffix)

                let input = "\(suffix)"
                let detector = try! NSDataDetector(types: NSTextCheckingType.Link.rawValue)
                let matches = detector.matchesInString(input, options: [], range: NSRange(location: 0, length: input.utf8.count))

                //  print(matches)
                for match in matches {

                    let url = (input as NSString).substringWithRange(match.range)

                    linksA.append(url)

                }

                theLink()

            } else {
                print("noooo")
            }
        } catch {
            print("Error : \(error)")
        }
    } else {
        print("Error: \(myURLString) doesn't  URL")
    }

之后,您需要使用此方法解码流式链接:

    func theLink() {


    /// /[u]00../g


    let firstElement = linksA.first

    let t = firstElement!.stringByReplacingOccurrencesOfString(",35", withString: "")

    let deUrl = t.characters.split{$0 == "|"}.map(String.init)

    let link = deUrl[0]

    // the link needs to be decoded

    let i = link.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)


    let p = i!.stringByReplacingOccurrencesOfString("%5Cu", withString: "")


    // you can see how the link should look like here :
    // http://ddecode.com/hexdecoder/?results=d82d4e564eccc1a6b96ee7c5c1e1c3b2

    // %252C : ,
    // 003d : =
    // 0026 : &

     let re = p.stringByReplacingOccurrencesOfString("003d", withString: "=")
     let y = re.stringByReplacingOccurrencesOfString("0026", withString: "&")
        let c = y.stringByReplacingOccurrencesOfString("%252C", withString: ",")

    print(c) }

您可以在此处查看所有代码

 类似资料:
  • 这段代码运行良好: 有人能帮我修一下密码吗?

  • 我想用另一个播放器播放谷歌驱动器视频。(mediaelement.js-jwplayer..)因为谷歌文档。使用自己的youtube播放器,我不喜欢。JW-Player不播放这些链接。 我如何在JW-Player6,Mediaelements或其他玩家中玩它们?

  • 下面是https://github.com/google/google-api-nodejs-client的代码。 一般问题:刷新令牌实际上如何与访问令牌一起工作? 背景:根据我的解释,每个访问令牌都有一个有限的时间跨度(~1小时)。因此,当用户第一次连接到我的服务器(服务器为用户身份验证提供了机制)时,服务器将收到有限生命期访问令牌和一次性刷新令牌。1小时后,访问令牌过期。 谢了!

  • 我想播放视频从谷歌驱动器在exoPlayer。我复制了可共享链接。但是这个链接通向google Drive视频播放器页面。我已经检查了共享链接响应,它包含视频拇指图像的链接和视频链接。但是这个视频链接正在调用任何代码来播放视频。我想从响应中获得或更具体地提取真正的视频可播放链接。这是响应中包含重要链接的代码部分, 图像拇指链接正在工作,但我找不到可以在exo player android应用程序中

  • 这是我收到的错误

  • 我试图从谷歌驱动器流200MB视频文件。我已经尝试嵌入一个24MB的文件,共享给每个人,这工作: 当我在浏览器中正常导航到这个网址时,会显示一个我必须接受的安全请求。我相信这就是问题所在,因为它阻止了下载。也许我在URL中丢失了一些参数?我如何流较大的文件没有谷歌驱动器阻止请求?