ffmpeg webcam capture+stream

Fórumok

Üdv!

Egy vmware-s linuxon (debian) próbálok webkameráról videót menteni vagy streamelni. felismeri, be is kapcsol, bemountolja a video0-t a dev-be.

amikor ffmpeg-vel akarom konvertálni, akkor hibát ír ki:

pl

ffmpeg -r 15 -s 352x288 -f video4linux -i /dev/video0 http://localhost:8090/feed1.ffm

/dev/video: No such file or directory
/dev/video0: I/O error occured
Usually that means that input file is truncated and/or corrupted.

tud valaki magyarázatot, hogy mi a gond? köszi előre is.

Hozzászólások

1. kérdés: ffserver fut? Mert az ffmpeg parancssorból az a gyanúm, arra próbálsz jelet küldeni.

Próbáld meg formátum megadás nélkül, ha az ffserver confját belőtted, úgy is olyan kimenetet fogsz kapni, nem kell előkonvertálni:

ffmpeg -i /dev/video0 http://localhost:8090/feed1.ffm

Ha még így sem, akkor csinálj egy próbát:

cat /dev/video0 > proba.mpg

Home-ba kapsz egy proba.mpg fájlt (pár másodpercig futtasd a cat-et, majd nyomj ctrl+c). Ha nincs benne kép, akkor valami más gubanc van.

Igazából az ffserver egy példa volt, próbáltam úgy, hogy a háttérben igen futott az ffserver, de pl próbáltam a kamerából ffmpeg-vel videót menteni, de ugyanezt a hibát tolta.

amit te mondtál parancsot arra ezt adja vissza:
cat: /dev/video0: Function not implemented

az a gond, hogy szívesen kipróbálnám másik webkamerával, volt is egy nekem, de nem találom, hátha ezzel van a gond, bár a winfos az simán felismeri.

van kamera a laptopban is, de azt nem tudom betolni a vmware-nak.

Töltsd le:
http://linuxtv.org/hg/v4l-dvb/archive/tip.tar.gz

make
make install

majd reboot

Szerintem a kamerának nincs fent a drivere. Anno én is szívtam, igaz, ott capture kártya volt a bemenete a stream-nek, akkortájt jöttem rá, hogy ilyen esetben jó, ha a legfrissebb készletet teszi fel az ember.

Leszedtem, de nem megy a fordítás.
elnézésedet kérem, hogy elakadok és ebben kérek segítséget, kezdőként tolom a dolgot, többnyire csomagkezelővel telepítgetek

ezt kapom:

debian:/home/denton/driver/v4l-dvb-514684e53dc6# make
make -C /home/denton/driver/v4l-dvb-514684e53dc6/v4l
make[1]: Entering directory `/home/denton/driver/v4l-dvb-514684e53dc6/v4l'
Updating/Creating .config
Preparing to compile for kernel version 2.6.18
File not found: /lib/modules/2.6.18-6-686/build/.config at ./scripts/make_kconfig.pl line 32, line 4.
make[1]: *** No rule to make target `.myconfig', needed by `config-compat.h'. Stop.
make[1]: Leaving directory `/home/denton/driver/v4l-dvb-514684e53dc6/v4l'
make: *** [all] Error 2
debian:/home/denton/driver/v4l-dvb-514684e53dc6#

valamit fel kéne tennem?
a readme-je is azt mondja, hogy just do make and make install

amúgy köszönöm, az idáigi válaszaidat.

Feltettem minden szart neki már. nagy nehezen talán lefordította a drivereket, bár voltak benne errorok.

amikor felcsatlakoztatom a kamerát, akkor ezt nyomatja ki a rendszer:

Mar 18 23:20:09 debian kernel: Linux video capture interface: v2.00
Mar 18 23:20:09 debian kernel: drivers/media/video/ov511.c: USB OV518 video device found
Mar 18 23:20:09 debian kernel: drivers/media/video/ov511.c: Device revision 1
Mar 18 23:20:09 debian kernel: drivers/media/video/ov511.c: Compression required with OV518...enabling
Mar 18 23:20:11 debian kernel: drivers/media/video/ov511.c: Sensor is an OV6630
Mar 18 23:20:12 debian kernel: drivers/media/video/ov511.c: Device at usb-0000:00:07.2-1 registered to minor 0
Mar 18 23:20:12 debian kernel: usbcore: registered new driver ov511
Mar 18 23:20:12 debian kernel: drivers/media/video/ov511.c: v1.64 for Linux 2.5 : ov511 USB Camera Driver

ebből nekem úgy tűnik, hogy rendesen felismeri.

amikor pedig cat-al akartam képet kimenteni, akkor ezt logolta le:

Mar 18 23:20:20 debian kernel: drivers/media/video/ov511.c: No decompressor available

feltettem és lefordítottam ezt az ov51x-jpeg modult, amit félig meddig sikerült is bepakolnom, a cat-al sikerült kinyomatnom valamit a kamerából.

igazából amit előbb írtam, bedugom a kamerát, akkor felismeri, utána modprobe-val bedobom a modult neki és utána ha akarok adatot nyerni a kamerából, akkor valamit már csinál. még nem azt amit kéne, de nem száll el illetve elszáll, de nem úgy ahogy idáig:)

No a fenti logból látszik, hogy a driver fent van.
Nézzünk egy ffmpeg kimenetet, mit ír rá.

Ja és egy jótanács: stream esetén felejtsd el a tárolóban lévő ffmpeg/ffserver párost. Húzd le a forrását a legfrissebb ffmpeg-nek:
http://www.ffmpeg.org/download.html

Sajnos ezt én is beszívtam anno, vagy 2 hétig kínlódtam, mire aztán hiretelen vezérelve forrást fordítottam, s egyből elindult a kicsike.

Ja, mégegy: van a gépen valami grafikus rendszer? Ha van, akkor egy Cheese-el le tudnád ellenőrizni a kamerát.

Ha hazaértem megcsekkolom.

általában igyekszem kerülni a fordítgatást de hát noh, ez jó lecke lesz:)

amikor ffmpeg-vel akarom lehúzni róla a képet, akkor kiír egy halom dolgot meg errorokat és gyakorlatilag befagy. részben, mert pl ssh-val rácsatlakozok putty-ból akkor ott újra tudom indítani.

nem nincs rajta grafikus rendszer, egy sima konzolos debian. Igazából főképp webfejlesztéssel foglalkozom(illetve ez a szakmám) és ez a virtuális debian az én lokális "tesztszerverem" otthon:)

Noh leszedtem elfordítottam a ffmpeg-t forrásból, fel is telepítettem ,adtam neki config fájlt is.

el is indul.
elsőre nem megy a kamerával, kiakad, hogy no such file a video0.

illetve maga a rendszer sír, hogy nincs decompressor

amit mondtam tegnap ezt a jpg-s decompressor-t azt ma leszedtem újra máshonnan újrafordítottam telepítettem, stb. amikor a kamerát csatlakoztatom akkor pedig ki is írja, hogy látja, de mégsem.

végülis nyomatok neki egy modprobe -t utána egy depmod -a

ezek után már ha elindítom a ffmpeg-t, akkor nem áll le, megy viszont a rendszer ezt a hibát dobálja folyamatosan:

Mar 19 20:03:44 debian kernel: /home/denton/ov-jpeg/ov51x-jpeg-1.5.9/ov51x-jpeg-core.c: ERROR: urb->status=-18: Unknown

ezt dobja hibának.

/home/denton/driver/v4l-dvb-514684e53dc6/v4l/ir-keytable.c:548: error: conflicting types for 'ir_input_register'
/home/denton/driver/v4l-dvb-514684e53dc6/v4l/../linux/include/media/ir-core.h:67: error: previous declaration of 'ir_input_register' was here
/home/denton/driver/v4l-dvb-514684e53dc6/v4l/ir-keytable.c:588: error: conflicting types for 'ir_input_register'
/home/denton/driver/v4l-dvb-514684e53dc6/v4l/../linux/include/media/ir-core.h:67: error: previous declaration of 'ir_input_register' was here
make[3]: *** [/home/denton/driver/v4l-dvb-514684e53dc6/v4l/ir-keytable.o] Error 1
make[2]: *** [_module_/home/denton/driver/v4l-dvb-514684e53dc6/v4l] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.18-6-686'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/home/denton/driver/v4l-dvb-514684e53dc6/v4l'
make: *** [all] Error 2

csináltam egy új linux image-t a legújabb stabil debian-al, ebben már 2.6.26 -os kernel van.
nah most feltettem az alapokat. a kamerát b.szik felismerni, lefordítottam rendesen a v41 -es cuccot úgy néz ki az rendesen végigment, nyomtam is neki egy make install -t fel is pakolta. viszont most ez az új rendszer cseszik felismerni a kamerát. egyszer -kétszer adott olyan hibát, hogy : "config failed can't read hub description"

kicsit idegelő, mi a franc a másabb mint az előző cucc.

nem nincs, nem ismeri fel a kamerát.

azon kínlódok, hogy hátha usb, de ha beteszek egy usb pen drive-t, akkor azt felismeri és az "be is kapcsol"
amit adtál kódot v4l-est azt feltettem, de mintha nem észlelné, nem lehet, hogy a 2.6.26-os kernel nem veszi ezt be rendesen?

lsusb

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 05a9:0518 OmniVision Technologies, Inc. OV518 Webcam
Bus 001 Device 002: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

ott figyel a webcam

dmesg | tail -n 30
[ 1161.676375] Initializing USB Mass Storage driver...
[ 1161.679544] scsi1 : SCSI emulation for USB Mass Storage devices
[ 1161.685995] usb-storage: device found at 2
[ 1161.686023] usb-storage: waiting for device to settle before scanning
[ 1161.685995] usbcore: registered new interface driver usb-storage
[ 1161.685995] USB Mass Storage support registered.
[ 1166.688796] usb-storage: device scan complete
[ 1166.694199] scsi 1:0:0:0: Direct-Access UDISK PDU01_8G 98I2.0 0.00 PQ: 0 ANSI: 2
[ 1166.710411] sd 1:0:0:0: [sdc] 15138800 512-byte hardware sectors (7751 MB)
[ 1166.718212] sd 1:0:0:0: [sdc] Write Protect is off
[ 1166.718212] sd 1:0:0:0: [sdc] Mode Sense: 00 00 00 00
[ 1166.718212] sd 1:0:0:0: [sdc] Assuming drive cache: write through
[ 1166.742382] sd 1:0:0:0: [sdc] 15138800 512-byte hardware sectors (7751 MB)
[ 1166.751301] sd 1:0:0:0: [sdc] Write Protect is off
[ 1166.751301] sd 1:0:0:0: [sdc] Mode Sense: 00 00 00 00
[ 1166.751301] sd 1:0:0:0: [sdc] Assuming drive cache: write through
[ 1166.751301] sdc:
[ 1166.904123] sd 1:0:0:0: [sdc] Attached SCSI removable disk
[ 1852.133627] VFS: Can't find ext3 filesystem on dev sdc.
[ 1870.876136] usb 2-1: USB disconnect, address 2
[ 2186.533337] usb 1-1: new full speed USB device using uhci_hcd and address 5
[ 2186.749417] usb 1-1: configuration #1 chosen from 1 choice
[ 2186.981451] usb 1-1: New USB device found, idVendor=05a9, idProduct=0518
[ 2186.981451] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2186.981451] usb 1-1: Product: USB Camera
[ 2186.981451] usb 1-1: Manufacturer: OmniVision Technologies, Inc.
[ 2187.052124] v4l1_compat: no symbol version for struct_module
[ 2187.057858] videodev: no symbol version for struct_module
[ 2187.060636] gspca_main: no symbol version for struct_module
[ 2187.060636] gspca_ov519: no symbol version for struct_module

sajnos nekem valami nagyon nem passzol. kipurgáltam minden c és h fájlból a linux/config.h -t ahogy mondta.

még a build mappából is töröltem az ov511 -es fájlt, mert nem jó neki, csak az 518-as azt írja.

de nem tudja lefordítani rendesen, hibát nyomat ki:

kb 5x ennyit:

/var/prog/ov511/ov511-2.32/ov511_core.c:5835: error: dereferencing pointer to incomplete type
/var/prog/ov511/ov511-2.32/ov511_core.c:5850: error: dereferencing pointer to incomplete type
/var/prog/ov511/ov511-2.32/ov511_core.c:5856: error: dereferencing pointer to incomplete type
/var/prog/ov511/ov511-2.32/ov511_core.c:5860: error: dereferencing pointer to incomplete type
/var/prog/ov511/ov511-2.32/ov511_core.c:5882: error: dereferencing pointer to incomplete type
/var/prog/ov511/ov511-2.32/ov511_core.c:5883: error: implicit declaration of function ‘video_device_release’
/var/prog/ov511/ov511-2.32/ov511_core.c:5885: error: implicit declaration of function ‘video_unregister_device’

Ha a v4l telepítve van, akkor ott kell figyelnie a gépen a ovcamchip modulnak. Szerintem annak jónak kell lennie.
modprobe ovcamchip

Szerk.: a v4l oladalán a gspca_ov519 modult írja, hogy az elvileg támogatja az 518-at is.

megcsekkolom ezt még, most make clean-eztem a v4l-t lefordítom újra gyorsan és megnézem, az előbbi modult az ovcamchip-et nem tudta bedobni modprobe mert insert hibákat adott, hogy nem jó a modul vagy mi. mindjárt megnézem ezt amit mondtál, csak fusson le a v4l fordítás

Ez most nem emgy, szerintem a kernel forrásal van valami baja, lehet újra kéne pakolnom:

WARNING: Error inserting v4l1_compat (/lib/modules/2.6.26-2-686/kernel/drivers/media/video/v4l1-compat.ko): Invalid module format
WARNING: Error inserting videodev (/lib/modules/2.6.26-2-686/kernel/drivers/media/video/videodev.ko): Invalid module format
WARNING: Error inserting gspca_main (/lib/modules/2.6.26-2-686/kernel/drivers/media/video/gspca/gspca_main.ko): Invalid module format
FATAL: Error inserting gspca_ov519 (/lib/modules/2.6.26-2-686/kernel/drivers/media/video/gspca/gspca_ov519.ko): Invalid module format

holnap megcsekkolom, meglássuk, ezek amiket itt felsorol .ko -kat, többnyire nem is léteznek ott.

bocs, hogy eltűntem.

tegnap lefordítottam a kernelt (nem ment le rendesen a végén volt error), hagytam had menjen és aludtam, hajnal 5kor kapcsoltam ki. remélhetőleg ami modulokat hiányolt asszem pl ilyen videodev -et meg hasonlókat, azok már ott vannak, este nézem újra.

kitartó vagyok mi, hogy még nem adtam fel? bár lassan már kezd idegelni.

sajnos ugyanaz a hiba:

/usr/src/linux-2.6.26.2# modprobe ovcamchip

WARNING: Error inserting v4l1_compat (/lib/modules/2.6.26-2-686/kernel/drivers/media/video/v4l1-compat.ko): Invalid module format
WARNING: Error inserting videodev (/lib/modules/2.6.26-2-686/kernel/drivers/media/video/videodev.ko): Invalid module format
WARNING: Error inserting v4l2_common (/lib/modules/2.6.26-2-686/kernel/drivers/media/video/v4l2-common.ko): Invalid module format
FATAL: Error inserting ovcamchip (/lib/modules/2.6.26-2-686/kernel/drivers/media/video/ovcamchip/ovcamchip.ko): Invalid module format

le(f)ordítottam a kernelt, igaz nem net le rendesen az sem, és ugyanott tartok. én egyenlőre kifogytam az ötletekből, hogy mit tudnék még tenni. szerinted? mit lehetne még próbálni? feltettem a kernelt azt amelyiket használom, a headers-t is, stb.. de semmi.

noh, lefordítottam újra a kernelt, most nem a : make-kpkg kernel-image --revision normal1 paranccsal, hanem simán make -val :D

utána a v4l-t is újrafordítottam

a modulokat hozzá tudtam adni. és a kamera is müxik most vagyis látja. a különbség a másik debianomhoz képest, hogy ott miután bedugtam már világított. itt most csak akkor világít a kamera, ha elindítom az ffmpeg -t, előbb villog és vagy leáll, hogy nem tetszik neki a video0, vagy marad. változó,mikor hogy van kedve.

ha cat -al tolatom ki az adatokat egy fájlba, akkor megy mint állat. idáig mpeg-be sikerült mentenem valamit, de azt se mindig, viszont nem lejátszható.

ha ráküldöm az ffserver által "fenntartott" feed1 -re, akkor megy, de a streamelt cuccon semmi nem látszik. valami codec problema lehet?

simán így tolatnám:

ffmpeg -i /dev/video0 video4linux out.mpeg (vagy http://localhost:8090/feed.ffm)

SZERK:
kipróbáltam /dev/video0 helyett valami videóforrást, pl flv-t, azt streamel -te, tehát akkor tuti a kamera -> video -nál van a gond most.

ffmpegnél nálam pl. nem kell a video4linux, simán megy anélkül is.
A cat-es fájlt nem tudod lejátszani egyáltalán?

Az ffmpegből milyet raktál fel? Csomagban lévőt? Mert az egy rakás.... húzd le a forrást, s a configure-t paraméterezd úgy, hogy azok a codecek legyenek benne, amit használnál (./configure --help ad segítséget, hogy hogyan paraméterezd). Nálam ez oldotta meg a stream problémát.

fuh, nah most mennem kell mert holnap fel kellene kelni dolgozni is, holnap majd folyt köv, ezt a drivert kell megoldani valahogy, nem tom még mi a gond, de biztos van megoldás. egyenlőre nagyon ellenem küzdenek az erők...

köszi, hogy segítesz és ennyi időt áldozol erre a problémámra.

Új szál :D
Bejöttem a céghez, itt az egyik gépen 14 colos monitor van, hát elég zavaros volt az írás. Otthon a 21 coloson nem vettem észre, hogy tömött a dolog.

Én is játszottam a hasonlóval és csak Ubuntun meg Gentoon akkor ez segített:

export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so

ffmepg *

persze ez már csak akkor játszik ha a kernel támogatja a webcamot illetve a v4l már telepítve van és az ffmpeg is ezekkel lett fordítva, mondjuk a használhatóság erősen korlátozódik a kamera driver képességeire sajnos

na hajrá

könyvjelző
--
unix -- több, mint kód. filozófia.
Life is feudal