Я пытаюсь использовать WebRTC для отображения видеовхода на экране в качестве живого канала. Я не пытаюсь делать какие-либо одноранговые коммуникации или что-то в этом роде, просто покажу видеопоток.
Код, который я отлично работаю для встроенной веб-камеры для ноутбуков, но когда я подключаю внешнее устройство ввода видео (в этом случае старая видеокамера, подключенная через S-Video к входу USB с использованием преобразователя StarTech - номер модели SVID2USB2NS), я ничего не получай. Я пробовал это как в Chrome, так и в FireFox.
Оба браузера находят видеоустройство и предлагают мне выбор моей встроенной веб-камеры или USB-устройства (в данном случае это "USB 2820" ), поэтому в этом случае они знают об этом устройстве.
В Chrome, когда я пытаюсь подключиться, вызывается "успешный" обратный вызов вызова getUserMedia, если я .getVideoTracks() обнаруживаю MediaStreamTrack
и момент обратного вызова, MediaStreamTrack
возвращает enabled
= true
и readyState
= live
. Однако нет видеовхода (только черная видеокамера и маленький красный значок "запись" на вкладке браузера Chrome не отображаются). Если я проведу MediaStreamTrack через секунду, я обнаружил, что readyState
now = "ended
" (хотя включено все еще верно).
В FireFox снова обнаружено устройство, но любая попытка подключения к нему с помощью getUserMedia просто вызывает обратный вызов ошибки с ошибкой HARDWARE_UNAVAILABLE.
Мой вызов getUserMedia
просто:
navigator.getUserMedia({ audio: false, video: true }, _webRTCsuccessCallback, _webRTCerrorCallback);
и мой обратный вызов успеха (включая некоторый тестовый код для проверки MediaStreamTrack
сразу и спустя одну секунду):
function _webRTCsuccessCallback(stream) {
window.stream = stream; // stream available to console
if (window.URL) {
_video.src = window.URL.createObjectURL(stream);
} else {
_video.src = stream;
}
var tracks = stream.getVideoTracks();
if (tracks[0]) {
console.log(tracks[0]);
setTimeout(function () { console.log(tracks[0]); }, 1000);
}
}
(где _video - это объект html5 на странице)
Firefox версии 31.0
версия Chrome 39.0.2171.71 м
Версия ОС: Windows 7 Ultimate (6.1.7601) SP1
Конвертер S-Video в USB: StarTech SVID2USB2NS (http://www.startech.com/AV/Converters/Video/USB-S-Video-Capture-Cable~SVID2USB2NS)
Исходная камера: Panasonic NV-DS35B (цифровая видеокамера)
Есть ли у кого-нибудь идеи, что вызывает это, и почему WebRTC не будет играть в мяч с помощью этого устройства?
(в более общих чертах, я знаю, что устройство отправляет видеосигнал на ПК, так как в IE я разработал элемент управления ActiveX, который использует DirectShow для получения видеопотока, и он собирает фид только отлично - разные технологии Я ценю, но это дает мне доказательства того, что устройство есть и отправляет видео!)