|
264 | 264 | var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');
|
265 | 265 |
|
266 | 266 | // Opera version <33 has mixed MP3 support, so we need to check for and block it.
|
267 |
| - var checkOpera = self._navigator && self._navigator.userAgent.match(/OPR\/([0-6].)/g); |
| 267 | + var ua = self._navigator ? self._navigator.userAgent : ''; |
| 268 | + var checkOpera = ua.match(/OPR\/([0-6].)/g); |
268 | 269 | var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);
|
| 270 | + var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1; |
| 271 | + var isOldSafari = (checkSafari && parseInt(ua.match(/Version\/(.*?) /)[1], 10) < 15); |
269 | 272 |
|
270 | 273 | self._codecs = {
|
271 | 274 | mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),
|
|
279 | 282 | m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),
|
280 | 283 | m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),
|
281 | 284 | mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),
|
282 |
| - weba: !!audioTest.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, ''), |
283 |
| - webm: !!audioTest.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, ''), |
| 285 | + weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, '')), |
| 286 | + webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, '')), |
284 | 287 | dolby: !!audioTest.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/, ''),
|
285 | 288 | flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')
|
286 | 289 | };
|
|
0 commit comments