Kedves HUP-osok!
Sajnos mozgókép terén igen kezdő vagyok, ezért primitív kérdést teszek fel: hogyan lehet egyszerűen egy mozgókép kockáit elérni C alól? Nem megjeleníteni akarom hanem elemezni, tehát valami szép tömbben kellenének az RGB-értékek.
Linux alól érdekelne, de hordozható megoldás még jobb volna.
Gondolom, az mplayer/vlc/ffmpeg ... lib-jeihez van valamiféle API, csak nem tudom, melyik használata célszerűbb, egyszerűbb, melyiknek és hol lássak neki.
Előre is kösz!
- 1751 megtekintés
Hozzászólások
gstreamert javasolnam, egyszerubb - szerintem - az apija, mint ffmpegnek.
- A hozzászóláshoz be kell jelentkezni
Én valószínűleg úgy oldanám meg, hogy nem közvetlenül a mozgóképet kezdeném kezelni, hanem ffmpeg-gel kiemelném belőle a számomra érdekes képkockákat, azokat PPM-be konvertálnám (egy kocka, egy kép), abban meg már ott vannak az RGB értékek egy egészen egyszerű adatszerkezetben.
- A hozzászóláshoz be kell jelentkezni
Igen, a kísérleti üzemre ez jó, de üzemszerűen már nem. A fenti gstreamert megnézem.
- A hozzászóláshoz be kell jelentkezni
FYI: Elsore gstreamer ijeszto tud lenni, legalabbis amikor utoljara komolyan foglalkoztam vele (volt vagy 5-6 eve mar) akkor elsore eleg nagy falat volt. De ha hozzaszokik az ember, ami hamar megy, rettento kenyelmes tud lenni ;)
- A hozzászóláshoz be kell jelentkezni
Meg is ijedtem! :-)
Nekem csak valami hihetetlenül primitív dolog kellene: egymás után a képkockák RGB-tömbjei. Semmi szinkronizálás, semmi audio, ... Erre a gstreamer tényleg kicsit sok, de talán megbírkózom vele. (Bár ha lenne az én egyszerű problémámhoz egy egyszerű megoldás, annak örülnék leginkább.)
- A hozzászóláshoz be kell jelentkezni
Na, azért ha mást nem, egy gd-t nem egy akkora ördöngösség beüzemelni, hogy ppm-mel kelljen vacakolni. Valószínűleg vmi videós könyvtárat se, de olyat még nem csináltam.
- A hozzászóláshoz be kell jelentkezni
Az eredeti kérdésből nem derült ki, hogy pontosan mi is a cél (például mit takarnak az "üzemi körülmények"), de az a rész, mely szerint "tehát valami szép tömbben kellenének az RGB-értékek" eléggé arra utal, hogy itt tulajdonképpen a PPM lenne a legjobb megoldás.
Persze lehet mindenféle könyvtárakkal zsonglőrködni, de az ember akkor is ugyanazt csinálja, csak legföljebb bonyolultabban, hiszen egy PPM kép nem más, mint az RGB értékek tömbje, meg az elején még 5 szám.
Én amúgy rendszeresen vacakolok PPM képekkel hasonló célból, így erősen érdekelne, hogy szerinted például a gd miért jobb megoldás.
- A hozzászóláshoz be kell jelentkezni
Ha nem felhasznalonak szanod, hanem sajat (kutatasi) celra kell, akkor a legegyszerubb, ha mplayerrel kimented a video kepkockait (mondjuk -vo png), imagemagickkel konvertalod valami konnyebben importalhato formaba (ha a libpng nem tetszik), es feldolgozod. Sokkal egyszerubben meguszod, ugyfelhez persze nem ajanlanam.
--
The iPad: Because the iPhone was too small for other people to notice you.
- A hozzászóláshoz be kell jelentkezni
5 éve foglalkozok video elemzéssel. Mi a célod az egésszel?
- A hozzászóláshoz be kell jelentkezni
Mar csak azert kerdezem, mert ez hatarozza meg az eszkozt.
Ha offline akarsz elemezni, akkor convertald at mplayer-rel pl. png-be, aztan olvasd be Qt-vel (bar az C++).
Ha feltetlenul a video file-lal akarsz dolgozni, akkor nem tudom mi a legjobb megoldas; en ffmpeg-et hasznaltam. De ez sokkal nagyobb szivas, ha pl. pozicionalni akarsz.
- A hozzászóláshoz be kell jelentkezni
ffmpeg libjei nagyon jok, en oket hasznalom.
- A hozzászóláshoz be kell jelentkezni
szábszkrájb
- A hozzászóláshoz be kell jelentkezni
Elég egyszerű megoldás, ha mencoder kimenetéről bolvasol egyszerűen stdin-ről egy frame-t (pl: rgb32: 640x480x4=1228800 byte -> 4 byte-os csoportokban (RGBA) 1 pixel, vagy rgb24: 640x480x3=921600 byte -> 3 byte-os csoportokban (RGB) 1 pixel).
Ezt a frame-t aztán már fel tudod dolgozni. Csak azt kell tudni, hogy milyen méretű a videód.
Egy példa 640x480-as videóra (az mencoder kitolja a stdout-ra, amit az mplayer jelenít meg a stdin-ről):
mencoder input_file -nosound -vf format=rgb32 -ovc raw -of rawvideo -really-quiet -o /dev/stdout | mplayer -demuxer rawvideo -rawvideo w=640:h=480:format=rgb32 -vc rawrgb32 -fps 25 -
Illetve ha a saját programoddal akarod feldolgzni:
mencoder input_file -nosound -vf format=rgb32 -ovc raw -of rawvideo -really-quiet -o /dev/stdout | beolvasoprogramod
- A hozzászóláshoz be kell jelentkezni