Próbuję wysłać obraz wideo kamery internetowej H.264 przez sieć Wi-Fi do innego komputera za pomocą programu gstreamer. Używam tego seminarium jako przewodnik. Używam Creative Live! Cam Connect HD jako moja kamera internetowa. The stronie internetowej twierdzi, że kamera internetowa ma wbudowany koder H.264. Ale kiedy użyłem v4l2-ctl, otrzymuję następujące informacje:
$ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
...
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : MJPEG
Ale kiedy używam flagi --all, otrzymuję inny format pikseli.
v4l2-ctl -d 1 --all
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : Live! Cam Connect HD VF0750
Bus info : usb-0000:00:14.0-1
Driver version: 3.5.7
Capabilities : 0x04000001
Video Capture
Streaming
Format Video Capture:
Width/Height : 640/360
Pixel Format : 'YUYV'
Field : None
Bytes per Line: 1280
Size Image : 460800
Colorspace : SRGB
...
Nie jestem pewien, dlaczego otrzymuję dwa różne formaty pikseli (MJPG i YUYV), ale spodziewałem się zobaczyć format Pixel: „H264” (skompresowany), tak jak w samouczku, z którym nawiązałem połączenie.
Używam Ubuntu 12.1 z kernelem w wersji 3.5.0. Czy ktoś ma pojęcie, jakie są moje problemy? Chciałbym użyć H.264 zamiast MJPG, aby zaoszczędzić na przepustowości. Jakieś pomysły, dlaczego nie wykrywa H.264? Dzięki.
Dwa różne formaty pikseli (MJPG i YUYV) pokazują, że kamera może obsługiwać te formaty. MPEG dla zakodowanych pakietów (zwykle używanych do wysyłania przez sieć do końca odbiornika) i YUYV dla RAW (nieskompresowany) obraz, który jest zwykle używany do podglądu lokalnego. Jak możesz, możesz użyć H.264 w VIDIOC_S_FMT, aby uzyskać strumień kodowany w H.264.
źródło