» »

[c++] Zajem Videa

[c++] Zajem Videa

SodVina ::

Pozdravljeni,

Rad bi naredil funkcijo, ki bi zajemala video datoteko frame po frame.
kako naj se tega lotim?

kaksen format (mpeg, avi..) naj si izberem, da bo zajem lazji?

thx

Kekec ::

Lahko uporabiš VideoForWindows, TWAIN, DirectShow, jaz bi izbral DirectShow

SodVina ::

Jaz potrebujem narediti funkcijo v c-ju. Ko bi klical funkcijo, bi mi s fajla pobrala naslednji frame. Potem bi tisti frame obdeloval dalje.

Gundolf ::

Kar ti je Kekec svetoval so knjižnice za uporabo v C++. Jaz sem naredil to z VideoForWindows (čisto navaden C) in z DirectX oz. DirectShow (C++), zadovoljen pa nisem bil z nobenim. Oba sta zmogla le peščico AVI formatov, drugi tudi nekaj malega MPEG. Morda je treba vedeti kako finto, kako odpreti razne DivX formate a jaz na netu nisem našel te informacije. Tako sem delal večinoma na nekompresiranih avi-jih in če imaš ti tudi odprte roke glede izbire formata, potem ne bo problemov. Saj konec koncev lahko vedno vzames mencoder (ga dobiš poleg mplayerja) in pretvoris vse kar leze in gre v cisto navadn avi.

Bom pogledal mojo kodo za branje z uporabo VFW in če nima preveč čudnih dependencies lahko dobiš. Zadeva zna odpreti fajl, prebrati podatke o formatu in brati posamezne slike (niti ne nujno po vrsti). Aja, to je C++ koda, da ne bo pomote.

Zgodovina sprememb…

  • spremenil: Gundolf ()

Kekec ::

Gundolf DirectShow bi ti moral podpirati vse tiste formate za katere imaš inštaliran codec, ce ga nisi imel si ga pač inštaliru ... načeloma sem bil zelo zadovolljen kaj vse je "pojedu" ... je pa čist stvar okusa tudi vfw je ok!

Kekec ::

In kaj sploh bi ti delal z vsakim frejmom če bi malo več povedal bi ti celo kdo povedal da že kaj takega obstaja!

SodVina ::

potem bi bil zadaj software za prepoznavo oblik in barv. To je potem cisto drga zgodba. Prvi korak je, da lahko dobim ven frame po frame.

Gundolf ::

Ja Kekec, jaz sem tudi pričakoval, da bo odprl vse, za kar imam kodeke. Pa ni. Še mpege je nekaj čudno odpiral - kar izpuščal frame in jih nadomeščal s že videnimi. Pa sem kodo napisal dvakrat, iz dveh različnih (a ne preveč) tutorialov. Morda mu ni bilo všeč, da sem za prikaz uporabljal OpenGL:D

Kekec ::

Ja nič ne rečem katero verzijo dx si pa uporabljal takrat?

Gundolf ::

Mislim da osmico.

SodVina ::

a bi lahko mogoce dobil kaksen konkreten primercek directshow-a ali pa kaksen iber hud tutorial? kaj moras namestiti, da ti stvar deluje? nekaj sem se trudil z .net fwork in directx sdk, pa nisem ravno skapiral bistva

thx

Senitel ::

DirectShow lahko poganajš iz .net samo preko reflectiona (vsaj kolikor je meni znano, ki se z .net ne ubadam glih velik). Za začetek dela z DirectShow ti priporočam, da si prebereš tale tutorial, oziroma vse tri. Potem si pa poglej "graphedit" programček, ki ga dobiš zraven DirectX SDK-ja (v direktoriju utilities). Tako da vidiš kakšni filtri vse obstajajo in kako boš potem programsko naredil svoj graf.
Video for Windows se mi zdi za tvoj primer dovolj in je tudi enostavnejši od DirectShow in omogoča brez komplikacij branje posameznih slik iz AVI datoteke... Vendar so tukaj dve vrste kodekov in če nimaš VFW kodekov ne boš mogel dekodirat ustreznih AVI datotek. Isto za DirectShow... Če ti nimaš kodekov za DirectShow ne bo z dekodiranjem nič.

Gundolf ::

Za VfW imaš tutorial na NeHe, če te zanima, za DX boš moral pa mal bolj pobrskati, jaz se ne spomnim več, kje sem jo dobil. Moja koda je pa na žalost tudi že integrirana do neprepoznavnosti.

Kekec ::

Zadnja verzija DX ima podporo za .NET

SodVina ::

Avi je nekoliko predolg, saj mi windows movie maker naredi 178 mega na minuto. Torej katero kompresijo(samo da malo skompresira) naj si izberem, da bo zajem najlazji, ter kateri program(knjiznica) bo znal s tem formatom se delat?

Zgodovina sprememb…

  • spremenil: SodVina ()

Gundolf ::

Za VfW ti lahko rečem, da snami tisti tutorial iz neta (imaš kodo za nekaj najbolj popularnih prevajalnikov), pa preizkusi za katere formate ti deluje. Teoretično bi ti moral delovati za vse, za kar imaš poinštalirane kodeke, praktično boš moral pa kar sprobat.

Senitel ::

Odpreš lahko tisto za kar imaš ustrezne kodeke... Recimo VirtualDub uporablja VFW, programi ala BSPlayer pa DirectShow.

Kekec: Seveda, samo ne za DirectShow.

Kekec ::

Senitel: seveda ga ima saj sem ga preizkusil ... čeprav v tazadnji verziji piše da ga bodo umaknili in prestavili v platform sdk.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Manjkajoč h.264 (intel quick sync video)

Oddelek: Programska oprema
111969 (1297) Mavrik
»

Prekodiranje zvoka v avi filmu(zvok DTS->ac3).

Oddelek: Zvok in slika
102406 (2278) jan01
»

kateri divx codec packi/codeci

Oddelek: Zvok in slika
223888 (3622) ferjan
»

div3?

Oddelek: Zvok in slika
91447 (1284) Kawl6

Več podobnih tem