Проблема с встроенным видео на YouTube (видео недоступно) - PullRequest
0 голосов
/ 06 апреля 2019

У меня возникла проблема, когда я хотел бы вставить видео YouTube в свое приложение expo. Когда я нажимаю кнопку воспроизведения, иногда появляется следующее сообщение:

unavaible_message_from_youtube

Например, когда я разместил это видео на Reddit, оно отлично воспроизводилось через встроенный проигрыватель YouTube.

Я использую этот пример кода:

              <WebView
                useWebKit={true}
                ref={(ref) => { this.videoPlayer = ref;}}
                source={{uri: 'https://www.youtube.com/embed/bo_efYhYU2A?rel=0&autoplay=0&showinfo=0&controls=0'}}
                scrollEnabled={false}
                domStorageEnabled={true}
                javaScriptEnabled={true}
              />

Я точно знаю, что видео разрешено встраивать, потому что когда это не так, я получаю другое сообщение об ошибке, которое позволяет мне открыть видео на YouTube: screenshot_disable_embedded

Вот ссылка для проверки: https://snack.expo.io/@maxgfr/youtube-embedded

Любая помощь будет принята с благодарностью

Maxime

Редактировать: пример URL, который не работает https://www.youtube.com/embed/8GaWM2a3FAc

1 Ответ

0 голосов
/ 27 апреля 2019

Чтобы решить эту проблему:

Я создаю веб-приложение, которое загружает видео на YouTube благодаря идентификатору видео.Моя конечная точка выглядит примерно так: https://mywebsite.com/ID_VIDEO_YOUTUBE

Затем в моем собственном приложении реагирования мне просто нужно загрузить URL моего веб-сайта:

<WebView
   useWebKit={true}
   ref={(ref) => { this.videoPlayer = ref;}}
   source={{uri: 'https://mywebsite.com/ID_VIDEO_YOUTUBE'}}
   scrollEnabled={false}
   domStorageEnabled={true}
   javaScriptEnabled={true}
/>

Редактировать: Вот примеркод, который я использую в своем приложении Vue JS

<template>
  <div style="position: fixed;overflow-y: hidden;overflow-x: hidden;width:100%;height:100%;">
    <iframe style="width:100%;height:100%;" :src="'https://www.youtube.com/embed/'+this.$route.params.id+'?&autoplay=1&playsinline=1'" autoplay="1" playsinline="1" frameborder="0" scrolling="no" allow="playsinline; accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  </div>
</template>

<script>
export default {
  name: 'youtube',
  head: {
    link: [{
      r: 'icon',
      h: '/static/favicon.png',
      t: 'image/png'
    }]
  }
}
</script>
...