'Fetching Video(Mp4 format) Using Axios in React and displaying in HTML video
I was trying to fetch a video from backend in the form of byte stream and i was able to get video from backend. But i am unable to handle the video on front end using axios. My code was some thing like
const [video, setVideo] = useState(null);
useEffect(() => {
axios.get(/pathToVideo, {
headers: {
Accept: 'video/mp4;charset=UTF-8'
},
}).then({
const URL = window.URL || window.webkitURL;
const url = URL.createObjectURL(new Blob([response.data], {type: "video/mp4"}));
setVideo(url);
})
})
and my HTML looks like
<video controls autoPlay loop muted>
<source src={video} type="video/mp4"></source>
</video>
The blob is creating some link but that link contains nothing, can some one suggest me where i am going wrong?
Solution 1:[1]
I don't use React-JS or Axios but from experience with blobs I would try something like this...
- Set your HTML first so the axios response code finds the video tag (it has empty
.src):
<video id="vidObj" width="500" height="360" controls loop muted autoplay>
<source src="" type="video/mp4">
</video>
- Then afterwards you can add your script somewhere as:
useEffect( () => {
axios.get( pathToVideo, { headers: { Accept: 'video/mp4;charset=UTF-8' } } )
.then( response => {
myUrl = (window.URL || window.webkitURL).createObjectURL( new Blob([response.data]) ); // response.data.data
var myVid = document.getElementById('vidObj');
myVid.setAttribute("src", myUrl);
myVid.play(); //# test playback
//setVideo(url); //# is this needed?
})
});
The above is untested but hope it helps somehow.
Notes:
- Does React expect
/pathToVideoinstead of justpathToVideo?
(wherepathToVideo = "https://somelink.etc";) - If
response.datadoes not work, maybe try asresponse.data.data. - I'm not sure what
source src={video}does but if possible make.srcempty so it's later updated by the axios blob response.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | VC.One |
