Ich versuche WebRTC zu verwenden, um eine Video-Eingabe auf dem Bildschirm als Live-Feed anzuzeigen. Ich versuche keine Peer-to-Peer-Kommunikation oder ähnliches, sondern zeige einfach einen Video-Feed an.WebRTC kann keinen Video-Feed von einem USB-Eingabegerät bekommen (readyState geht zu Ende)
Der Code Ich habe funktioniert gut für meine Laptops integrierte Webcam, aber wenn ich ein externes Video-Eingabegerät anschließen (in diesem Fall ein alter Camcorder über S-Video an einen USB-Eingang mit einem StarTech-Konverter verbunden - Modellnummer SVID2USB2NS) Ich bekomme nichts. Ich habe das sowohl in Chrome als auch in Firefox versucht.
Beide Browser finden das Videogerät und bieten mir die Wahl zwischen meiner integrierten Webcam oder dem USB-Gerät (in diesem Fall als "USB 2820" bezeichnet), so dass sie in diesem Fall das Gerät kennen.
In Chrome, wenn ich versuche, der „Erfolg“ Rückruf des getUserMedia Anrufs zu verbinden, wird aufgerufen, wenn ich .getVideoTracks() Ich finde den MediaStreamTrack
, und den Moment des Rückrufs, die MediaStreamTrack
kehrt enabled
= true
und readyState
= live
. Es gibt jedoch keinen Video-Eingang (nur ein schwarzes Video-Panel und das kleine rote "Aufnahme" -Symbol in der Chrome-Browser-Registerkarte erscheint nicht). Wenn ich den MediaStreamTrack eine Sekunde später überprüfe, finde ich readyState
now = "ended
" (obwohl aktiviert ist immer noch wahr).
In FireFox wird das Gerät erneut gefunden, aber jeder Versuch, eine Verbindung mit getUserMedia herzustellen, löst nur den Fehlerrückruf mit einem HARDWARE_UNAVAILABLE-Fehler aus.
Mein getUserMedia
Aufruf ist einfach:
navigator.getUserMedia({ audio: false, video: true }, _webRTCsuccessCallback, _webRTCerrorCallback);
und mein Erfolg Rückruf ist (darunter auch einige Code-Test der MediaStreamTrack
sofort und eine Sekunde später zu überprüfen):
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);
}
}
(wo _video ist die html5 Objekt auf der Seite)
Firefox Version 31.0
Chrome-Version 39.0.2171.71 m
OS-Version: Windows 7 Ultimate (6.1.7601) SP1
S-Video-auf-USB-Konverter: StarTech SVID2USB2NS (http://www.startech.com/AV/Converters/Video/USB-S-Video-Capture-Cable~SVID2USB2NS)
Quelle Kamera: Panasonic NV- DS35B (Digitale Videokamera)
Hat jemand irgendwelche Ideen, was das verursacht, und warum WebRTC Ball mit diesem Gerät nicht spielen wird?
(allgemein gesagt, ich weiß, das Gerät sendet ein Videosignal an den PC, wie in IE habe ich ein ActiveX-Steuerelement entwickelt, das DirectShow verwendet, um den Video-Feed zu erhalten, und es sammelt den Feed ganz gut - anders Technologie Ich schätze, aber es gibt mir Beweise, dass das Gerät da ist und Video senden!)
Welche Kamera und welches Betriebssystem? Möglicherweise müssen Sie einen Bug in den entsprechenden Bug-Tracker des Browsers veröffentlichen. –
@BenjaminTrent thanks - habe meine Frage bearbeitet, um das Betriebssystem und die Kamera-Informationen hinzuzufügen. Ich befürchtete, dass es am Ende zu den Browser-Trackern kommen würde, aber weder Chrome noch Firefox scheinen es zu wissen. Ich fragte mich, ob es vielleicht etwas war In beiden Browsern war es eher ein ähnliches Problem als bei anderen. Jeder, der mehr mit WebRTC zu tun hatte als ich, konnte alles anbieten, was ich vermisste! Z.B. WebRTC in diesen Browsern nicht wie bestimmte Arten von Eingabe, z. PAL vielleicht? – PulseLab
@PulseLab: Können Sie bitte bestätigen, ob Sie die neuesten Treiber für ** StarTech SVID2USB2NS ** und ** Panasonic NV-DS35B ** installiert haben? –