Home Reference Source

src/is-supported.ts

  1. import { getMediaSource } from './utils/mediasource-helper';
  2.  
  3. export function isSupported (): boolean {
  4. const mediaSource = getMediaSource();
  5. if (!mediaSource) {
  6. return false;
  7. }
  8. const sourceBuffer = self.SourceBuffer || (self as any).WebKitSourceBuffer as SourceBuffer;
  9. const isTypeSupported = mediaSource &&
  10. typeof mediaSource.isTypeSupported === 'function' &&
  11. mediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"');
  12.  
  13. // if SourceBuffer is exposed ensure its API is valid
  14. // safari and old version of Chrome doe not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible
  15. const sourceBufferValidAPI = !sourceBuffer ||
  16. (sourceBuffer.prototype &&
  17. typeof sourceBuffer.prototype.appendBuffer === 'function' &&
  18. typeof sourceBuffer.prototype.remove === 'function');
  19. return !!isTypeSupported && !!sourceBufferValidAPI;
  20. }