#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>