Экзоплеер, эквивалентный для iOS - Потоковое видео, похожее на TikTok - PullRequest
1 голос
/ 05 октября 2019

Существует ли эквивалент exoplayer для iOS для воспроизведения видео?

Или кто-нибудь может помочь мне узнать, как TikTok транслирует видео? Какой видеоплеер он использует? Я пытаюсь транслировать видео в своем приложении из базы данных Firebase, я использую Swift, но застрял в выборе правильного способа для потоковой передачи видео. Может ли кто-нибудь мне помочь или подсказать, с чего начать?

1 Ответ

2 голосов
/ 07 октября 2019

Нативным плеером в iOS является AVPlayer

Так же, как ExoPlayer от Google - это обычное значение по умолчанию в Android, AvPlayer - обычное значение по умолчаниюв iOS, и вы можете использовать его для воспроизведения потокового видео, которое обычно будет в формате потоковой передачи файлов HLS .m3u8 для устройств Apple. Потоки для устройств Android обычно имеют формат потоковой передачи файлов DASH .mpd.

В это время Apple также добавила новую инфраструктуру пользовательского интерфейса для всех устройств, включая iOS - если вы используете это, стоит поискать несколько хороших примеров интеграции AVPlayer, например:

https://medium.com/@chris.mash/avplayer-swiftui-b87af6d0553

Если вы используете более традиционный UIKit, тогда Apple предоставит несколько простых примеров, которые вы можете протестировать, заменив ваш тестовый пар в приведенном ниже коде (из: https://developer.apple.com/documentation/avfoundation/media_assets_playback_and_editing/creating_a_basic_video_player_ios_and_tvos?language=objc):

@IBAction func playVideo(_ sender: UIButton) {
    //Substitute your video stream URL here to test
    guard let url = URL(string: "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8") else {
        return
    }
    // Create an AVPlayer, passing it the HTTP Live Streaming URL.
    let player = AVPlayer(url: url)

    // Create a new AVPlayerViewController and pass it a reference to the player.
    let controller = AVPlayerViewController()
    controller.player = player

    // Modally present the player and call the player's play() method when complete.
    present(controller, animated: true) {
        player.play()
    }
}
...