видео не будет загружаться встроенным

#ios #swift #wkwebview

#iOS #swift #wkwebview

Вопрос:

Я хочу, чтобы мое видео транслировалось в режиме просмотра, а не занимало экран, я указал это всеми способами, переключил опцию в раскадровках и по-прежнему ничего. любые мысли или идеи, возможно, чего-то не хватает, пожалуйста, не стесняйтесь самостоятельно протестировать код и посмотреть результат (заполняет весь экран и по-прежнему не может воспроизводиться встроенным.)

     override func viewDidLoad() {

    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let webConfiguration = WKWebViewConfiguration()
    webConfiguration.allowsInlineMediaPlayback = true
    webConfiguration.mediaTypesRequiringUserActionForPlayback = []

    LiveStream = WKWebView(frame: CGRect(x: 0, y: 0, width: 375, height: 300), configuration: webConfiguration)
    self.view.addSubview(LiveStream)

    if let videoURL:URL = URL(string: "https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8?playsinline=1") {
        let request:URLRequest = URLRequest(url: videoURL)
        LiveStream.load(request)
    }
  

Отредактировал ссылку на время безотказной работы 24/7 ( https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8?playsinline=1 )

Комментарии:

1. @rmaddy почему это не возможная проблема с xcode (вы удалили тег xcode?), я неправильно понимаю систему тегов?

2. Теги представляют, о чем идет речь. Ваш вопрос не об IDE Xcode. Тот факт, что вы используете Xcode для разработки своего приложения, не имеет отношения к вашему вопросу. Что было бы гораздо полезнее, так это добавить тег, указывающий, для какой ОС это предназначено (iOS или macOS).

Ответ №1:

Я вижу здесь некоторые ошибки.

Прежде всего, вы уже добавили WKWebView в свою раскадровку, и я предполагаю, что из вашего

 @IBOutlet var LiveStream: WKWebView! 
  

и вы также снова добавляете его в свой просмотр с

 self.view.addSubview(LiveStream)
  

Что является неправильным способом его добавления.

Для этого вы можете использовать UIView .

Для этого добавьте UIView в свою раскадровку и создайте IBOutlet для этого

 @IBOutlet weak var viewForEmbeddingWebView: UIView!
  

затем объявите экземпляр var LiveStream: WKWebView!

Теперь вы можете настроить LiveStream , как показано ниже:

 let webConfiguration = WKWebViewConfiguration()
webConfiguration.allowsInlineMediaPlayback = true
webConfiguration.mediaTypesRequiringUserActionForPlayback = []

LiveStream = WKWebView(frame: viewForEmbeddingWebView.frame, configuration: webConfiguration)
self.viewForEmbeddingWebView.addSubview(LiveStream)

if let videoURL:URL = URL(string: "https://www.youtube.com/embed/9n1e1N0Sa9k?playsinline=1") {
    let request:URLRequest = URLRequest(url: videoURL)
    LiveStream.load(request)
}
  

И ваш результат будет:

введите описание изображения здесь

Как вы заметили, видео воспроизводится внутри WKWebView не в полноэкранном режиме.

Примечание:

Ваш URL у меня не работал, поэтому я использовал другой URL для демонстрации.

Комментарии:

1. да, я понял, что тоже дважды объявлял это сам. этот метод, похоже, работает с видеороликами YouTube, но не со ссылкой .m3u8, поскольку он не обращает внимания на встроенную политику. @Dharmesh я также перезапустил тестовый поток, так что теперь он должен работать

2. попробуйте эту ссылку, если она перейдет в автономный режим, это приведет к тому же ошибочному результату: devstreaming-cdn.apple.com/videos/streaming/examples/… @Dharmesh