Как я могу определить, поддерживает ли браузер MJPEG?

современные браузеры, кроме IE handle MJPEG (Motion JPEG). здесь пример скрипку.

могу ли я обнаружить поддержку MJPEG? Я просмотрел Modernizr напрасно.

3 ответов


Я пробовал самый очевидный способ определить, может ли изображение быть загружено или нет:

$output = $('<img id="webcam">')
        .attr('src', src)
        .load(function(){alert('ok')})
        .error(function(){alert('error')});

в случае, если изображение может быть загружено load событие будет запущено, в противном случае error. Проверено в последних Chrome и IE8. Работает, как и ожидалось.


Modernizr поддерживает только следующие форматы для обнаружения прямо сейчас: ogg, webm и h264.

элемент video имеет вызов canPlayType(format) это будет ваш единственный вариант (если он работает для работы с mjpg). Ваша логика обнаружения будет выглядеть примерно так (не формат будет отличаться).

var videoElement = document.createElement('video');
if(!!videoElement.canPlayType)
{
  var browserConfidence = videoElement.canPlayType('video/mjpeg; codecs="insert, them"');
  if(browserConfidence == "probably")
  {
    // high confidence
  }
  else if(browserConfidence == "maybe")
  {
    // low confidence
  }
  else
  {
    // no confidence... it definately will not play
  }
}

убедитесь, что вы посетите информацию W3C о canPlayType. Похоже, что тип mime должен быть "video/mjpeg", а не "видео / mjpg", как вы указали ранее.


к сожалению, для этого вам нужно будет использовать элемент управления ActiveX для поддержки mjpg в IE. См.Как встроить файл mjpeg на веб-страницу.