【问题标题】:iOS Stream video from Google drive Swift来自 Google 驱动器 Swift 的 iOS 流视频
【发布时间】:2016-08-26 03:07:35
【问题描述】:

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

https://drive.google.com/file/d/0B2Kri7-TaAFJSlJ4UTJuSElGamM/preview

从上面的 URL 获取 Stream Link 的唯一方法是解码 webView HTML

代码:

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 的 HTML

问题是:

我在 HTML 中寻找的是这个“fmt_stream_map”,它包含我需要的所有流媒体链接 流式传输视频,但我不知道如何访问它并获取来自它的 Steam 链接。

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

【问题讨论】:

    标签: android ios swift video-streaming


    【解决方案1】:

    我用方法解决了这个问题:

            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) }
    

    你可以看到所有的代码Here

    【讨论】:

      猜你喜欢
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多