Как отобразить видео из корзины S3 в React Native?

#react-native #amazon-s3 #expo #arraybuffer

#react-native #amazon-s3 #выставка #arraybuffer

Вопрос:

Я пытаюсь загрузить видео из корзины S3 и передать его в видеокомпонент Expo. Я использую s3.getObject() и функцию обратного вызова, чтобы получить объект как ArrayBuffer . Но я не знаю, как использовать эти данные с этого момента. Я попытался "data:video/mp4;base64," videoData.body объединить и передать это как объект. Я также попытался преобразовать его в Base64String , что также не сработало.

 let videoData = {}
const downloadIntro = async () => {

  s3.getObject(bucketParams, function (err, data) {
    if (err) {
      console.log("Error:"   err)
    } else {
      console.log(data.ContentLength)    // 1210362
      console.log(data.ContentType)      // video/mp4
      console.log(data.Metadata)         // Object {}
      console.log(data.Body.buffer)      // ArrayBuffer []
      videoData.body = data.Body.buffer
    }
  })
}

export default function App() {

  let [vidData, setVidData] = useState(null)

  const playVideo = () => {
    console.log("Trying to play")
    setVidData({video: "data:video/mp4;base64,"   videoData.body})
  }

  return (

    <SafeAreaView style={styles.container}>

      <Button title={"Load Video"} onPress={downloadIntro}/>
      <Button title={"Start"} onPress={playVideo}/>

      <Video
        source={vidData}  
        rate={1.0}
        volume={1.0}
        isMuted={false}
        resizeMode={"contain"}
        shouldPlay={paused}
        isLooping={false}
        style={{
          width: 300,
          height: 300
        }}
      />

    </SafeAreaView>

  );
}
 

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

1. Какой тип видео? Это HLS, DASH, MP4 …?

2. @BentOnCoding MP4

3. Какой движок видео (shaka, dash.js , и т.д.)? Вы должны иметь возможность указать URL ресурса в качестве источника видео или передать его в свой видеооборудование. Если только вы не создаете свой собственный видеооборудование.

Ответ №1:

Похоже, вы пытаетесь поместить необработанные видеоданные в исходный код. Попробуйте просто установить атрибут в URL-адрес видео :

 <video controls width="250">

    <source src="/media/cc0-videos/flower.mp4"
        type="video/mp4">

</video>