Подключение к видео vimeo через проблему базы данных firebase - PullRequest
0 голосов
/ 10 февраля 2019

Я создаю приложение с несколькими видеофайлами.Первоначально я хранил их в хранилище Firebase и получил к ним доступ, поместив их ссылки в базу данных FirebaseПри дальнейшем осмотре я думаю, что хранение их в пожарной базе может быть немного дороже.поэтому я искал альтернативные варианты и подумал, что Vimeo может быть дешевле для хранения видео.

Моя проблема в том, что когда я подключаю URL к моей базе данных Firebase, видео Vimeo не может быть просмотрено.Но любой URL к файлу FireBase, хранящемуся в хранилище FireBase, будет работать.Я использую avkit для просмотра видео.

Я не могу понять, как URL не будет работать для видео Vimeo, но будет работать с видео, хранящимся в FireBase.

моя база данных выглядит следующим образом: enter image description here

На нем есть видео 1, пытающееся вызвать видео vimeo (которое не работает), и видео 2, связанное с пожарной базойвидео, которое работает.

мой код:

import UIKit
import AVKit
import AVFoundation
import Firebase
import FirebaseDatabase

 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {



var table = [Videos]()
var ref: DatabaseReference!

@IBOutlet weak var Tableview: UITableView!



override func viewDidLoad() {
    super.viewDidLoad()

    ref = Database.database().reference().child("videos")
    ref.observe(DataEventType.value, with: {(snapshot) in
        if snapshot.childrenCount > 0 {
            self.table.removeAll()

            for video in snapshot.children.allObjects as! [DataSnapshot] {

                let Object = video.value as? [String: AnyObject]
                let Title =  Object?["Title"]
                let videolink = Object?["link"]

                //let video = Videos(Title: Title as? String, link: video as? String)
                let video = Videos(Title: Title as? String, link: videolink as? String)
                self.table.append(video)

                self.Tableview.reloadData()
            }
        }
    })
}


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return table.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = Tableview.dequeueReusableCell(withIdentifier: "cell") as! TableViewCell
    let video: Videos

    video = table[indexPath.row]
    cell.titleLabel.text = video.Title

    return cell

}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    guard let videoURL = URL(string: table[indexPath.row].link!) else {
        return
    }

    let player = AVPlayer(url: videoURL)

    let controller = AVPlayerViewController()
    controller.player = player

    present(controller, animated: true) {
        player.play()
    }

}

1 Ответ

0 голосов
/ 17 февраля 2019

Вы не можете использовать эту ссылку для AVPlayer, это веб-ссылка, а не медиа-ссылка.Чтобы получить ссылку на мультимедиа из видео-записи, вы должны использовать VimeoNetworking или HCVimeoVideoExtractor .

Если вы хотите использовать HCVimeoVideoExtractor, то здесь код:

let url = URL(string: "https://vimeo.com/[video_id]")!
HCVimeoVideoExtractor.fetchVideoURLFrom(url: url, completion: { ( video:HCVimeoVideo?, error:Error?) -> Void in                

if let err = error { return }
guard let vid = video else { return }

if let videoURL = vid.videoURL[.Quality1080p] {
    let player = AVPlayer(url: videoURL)
    let playerController = AVPlayerViewController()
    playerController.player = player
    self.present(playerController, animated: true) {
        player.play()
    }
}                            
})

Вы не можете получить извлеченный URL-адрес и поместить его в Firebase, потому что встроенная ссылка на видео - это «сессия», котораяозначает, что он содержит токен, срок действия которого истекает через некоторое время.

Надеюсь, это поможет.

...