So verwenden Sie eine Handycam als Webcam in Linux

2863
Lolitha Ratnayake

Kann ich einen Camcorder als V4L2src im gstreamer verwenden? Kann ich einen Camcorder einfach als Webcam in Linux verwenden? Wenn ja, welche Modelle werden getragen? Danke im Voraus.

2
Was ist ein "Camcorder"? Die Frage ist ein bisschen wie "Kann ich Festplatten verwenden" mit meinem Laptop, und die Antwort ist "Natürlich können Sie", bis Sie bemerken, dass Ihre Festplatte eine SCSI-Festplatte ist und Ihr Laptop nur S-ATA-Stecker hat, also Tatsache, dass Sie diese bestimmte Festplatte auf dieser bestimmten Maschine nicht verwenden können ... umläute vor 12 Jahren 0

1 Antwort auf die Frage

4
umläute

Es gibt ein paar verschiedene APIs für die Videoaufnahme, insbesondere

  • v4l2 (das ist das allgemeine Video-API für Linux; es deckt fast alles außer den folgenden beiden ab)
  • iidc (das ist das industrielle "video over ieee1394" -Protokoll, das normalerweise in Hardware für Endverbraucher nicht zu finden ist)
  • dv (das ist das "A / V-Signal über ieee1394", das Sie üblicherweise in Firewire-Camcordern für den Consumer-Bereich finden; höchstwahrscheinlich meinen Sie "Camcorder")

Je nach Geschmack Ihres "Camcorders" können Sie eine (oder einige oder keine) davon verwenden.

analog aus

Jeder anständige Camcorder kommt seit Jahren mit einem anlog out (zB "composite"). Um dies auf jedem Computer verwenden zu können, müssen Sie das Signal zuerst digitalisieren, was normalerweise über eine Framegrabber-Karte im Computer erfolgt. bttv (bt878) und Connexant-basierte Grabber PCI (e) -Karten werden auf Linux sehr gut unterstützt (andere sind wahrscheinlich gut, aber ich habe sie nie verwendet), und meiner Erfahrung nach ist dies immer noch der Weg, wenn Sie eine niedrige Latenz benötigen, aber leider werden diese Karten spärlich. Diese Karten werden normalerweise von der v4l2-API abgedeckt. Sie werden also problemlos v4l2srcfunktionieren.

v4l2src ! ... 

Auf dem Markt befinden sich externe analog2usb- und analog2dv-Grabber, siehe unten.

Digitalausgang (USB)

Hier kommen alle Webcams ins Spiel, wahrscheinlich einige externe analog2usb-Geräte, vielleicht auch "Camcorder". Ob Ihr Gerät unterstützt wird, hängt von den verwendeten Chipsätzen ab. wenn es wird unterstützt, so werden diese in der Regel den v4l2-API verwenden, also wieder so etwas wie dies funktionieren wird:

v4l2src ! ... 

Digitalausgang (DV / HDV)

Diese Geräte werden nicht von v4l2 abgedeckt, sondern es gibt eine separate API. Ein DV-Stream enthält sowohl Audio als auch Video. Um ein Bild zu erhalten, müssen Sie zuerst den DV-Stream nehmen, dann die beiden (Audio- und Video-) Streams aufteilen (auch als "Demultiplex / Demux" bezeichnet) und dann die Daten decodieren resultierende Video-Stream. so etwas sollte tun:

dv1394src ! dvdemux ! dvdec ! ... 

Wenn Sie einen HDV-Stream erhalten (der eigentlich ein MPEG-TS-Stream über ieee1394 ist), gibt es ein separates hdv1394srcObjekt:

 hdv1394src ! decodebin ! ... 

Digitalausgang (IIDC)

Industrielle Firewire-Kameras (meist zur Bilderkennung und dergleichen verwendet; es gibt keinen "Camcorder" auf dem Markt, der dieses Protokoll verwendet, deshalb füge ich es nur der Vollständigkeit halber hinzu) verwendete ein Protokoll namens "IIDC".

Um es mit gstreamer zu verwenden, machen Sie einfach:

dc1394src ! ... 

Andere

Die meisten anderen Protokolle, die Sie dort finden (z. B. GigE), sind proprietäre Procolls für industrielle Zwecke (und bieten keine "Camcorder" - Hardware).