diff --git a/packages/core/src/textures/resources/VideoResource.js b/packages/core/src/textures/resources/VideoResource.js index 4094351..c48ac7e 100644 --- a/packages/core/src/textures/resources/VideoResource.js +++ b/packages/core/src/textures/resources/VideoResource.js @@ -40,7 +40,12 @@ let { src, mime } = source[i]; src = src || source[i]; - mime = mime || `video/${src.substr(src.lastIndexOf('.') + 1)}`; + + const baseSrc = src.split('?').shift().toLowerCase(); + const ext = baseSrc.substr(baseSrc.lastIndexOf('.') + 1); + + mime = mime || `video/${ext}`; + sourceElement.src = src; sourceElement.type = mime; diff --git a/packages/core/src/textures/resources/VideoResource.js b/packages/core/src/textures/resources/VideoResource.js index 4094351..c48ac7e 100644 --- a/packages/core/src/textures/resources/VideoResource.js +++ b/packages/core/src/textures/resources/VideoResource.js @@ -40,7 +40,12 @@ let { src, mime } = source[i]; src = src || source[i]; - mime = mime || `video/${src.substr(src.lastIndexOf('.') + 1)}`; + + const baseSrc = src.split('?').shift().toLowerCase(); + const ext = baseSrc.substr(baseSrc.lastIndexOf('.') + 1); + + mime = mime || `video/${ext}`; + sourceElement.src = src; sourceElement.type = mime; diff --git a/packages/core/test/VideoResource.js b/packages/core/test/VideoResource.js index 3b90eb4..f765b33 100644 --- a/packages/core/test/VideoResource.js +++ b/packages/core/test/VideoResource.js @@ -37,4 +37,29 @@ resource.destroy(); }); }); + + it('should find correct video extension from Url', function () + { + const resource = new VideoResource('https://example.org/video.webm', { + autoLoad: false, + autoPlay: false, + }); + + expect(resource.source.firstChild.type).to.be.equals('video/webm'); + + resource.destroy(); + }); + + it('should get video extension without being thrown by query string', function () + { + const resource = new VideoResource('/test.mp4?123...', { + autoLoad: false, + autoPlay: false, + }); + + expect(resource.source.firstChild.type).to.be.equals('video/mp4'); + + resource.destroy(); + }); }); +