diff --git a/src/js/media/flash.js b/src/js/media/flash.js index f58933777d..5ad6ca18fe 100644 --- a/src/js/media/flash.js +++ b/src/js/media/flash.js @@ -331,7 +331,16 @@ vjs.Flash.isSupported = function(){ }; vjs.Flash.canPlaySource = function(srcObj){ - if (srcObj.type in vjs.Flash.formats || srcObj.type in vjs.Flash.streamingFormats) { return 'maybe'; } + var type; + + if (!srcObj.type) { + return ''; + } + + type = srcObj.type.replace(/;.*/,'').toLowerCase(); + if (type in vjs.Flash.formats || type in vjs.Flash.streamingFormats) { + return 'maybe'; + } }; vjs.Flash.formats = { diff --git a/test/unit/flash.js b/test/unit/flash.js index d2f91b7f7d..18c5909e35 100644 --- a/test/unit/flash.js +++ b/test/unit/flash.js @@ -45,4 +45,20 @@ test('test isStreamingSrc', function() { ok(!isStreamingSrc('http://streaming.is/fun')); ok(!isStreamingSrc('https://streaming.is/fun')); ok(!isStreamingSrc('file://streaming.is/fun')); -}); \ No newline at end of file +}); + +test('test canPlaySource', function() { + var canPlaySource = vjs.Flash.canPlaySource; + + // supported + ok(canPlaySource({ type: 'video/mp4; codecs=avc1.42E01E,mp4a.40.2' }), 'codecs supported'); + ok(canPlaySource({ type: 'video/mp4' }), 'video/mp4 supported'); + ok(canPlaySource({ type: 'video/x-flv' }), 'video/x-flv supported'); + ok(canPlaySource({ type: 'video/flv' }), 'video/flv supported'); + ok(canPlaySource({ type: 'video/m4v' }), 'video/m4v supported'); + ok(canPlaySource({ type: 'VIDEO/FLV' }), 'capitalized mime type'); + + // not supported + ok(!canPlaySource({ type: 'video/webm; codecs="vp8, vorbis"' })); + ok(!canPlaySource({ type: 'video/webm' })); +});