Scene Detector – Video Scene Detection COM -objekti
Kuvaus
Scene Detector on tehokas COM-komponentti kohtausten tunnistamiseen ja käsittelyyn. Se sisältää palkitun HandySaw DS -tekniikan erittäin tarkkaan ja nopeaan optiseen kohtausten tunnistukseen. Se on suunnattu ohjelmistoyrityksille ja kehittäjille, jotka haluavat laajentaa tuotteitaan. COM-komponentti on uudelleenkäytettävä ohjelmistomoduuli, joka noudattaa Component Object Model (COM) -arkkitehtuuria, jonka ansiosta sitä voidaan käyttää useissa ohjelmointikielissä ja -ympäristöissä. Jos etsit itsenäistä sovellusta kohtausten tunnistamiseen, voit käyttää HandySaw DS:ää seuraamalla tätä linkkiä.
Scene Detector -objekti käsittelee videotiedostoja ja palauttaa luettelon löydetyistä kohtauksista. Se voi myös tallentaa pikkukuvia jokaisesta kohtauksesta ja ilmoittaa heti soittajasovellukselle jokaisesta uudesta löydetystä kohtauksesta takaisinkutsuliittymien kautta käsittelyn aikana.
Pääominaisuudet
- Tunnistaa kohtaukset lähes kaikista videotiedostoista, joita Windows Media Player voi toistaa (DirectShow API:n käytön vuoksi)
- Nopea ja tarkka algoritmi
- Helppo integrointi
- Raportoi uuden kohtauksen heti, kun se on määritetty, käsittelyn aikana. Kohtauksen tunnistuksen valmistumista ei tarvitse odottaa
- Voi luoda pikkukuvia - ensimmäisen ja viimeisen kehyksen kuvia jokaisesta kohtauksesta ja tallentaa ne BMP- tai JPG-tiedostoihin
- Mahdollisuus määrittää lähde-, jakaja- ja videodekooderisuodattimet, joita käytetään käsittelyn aikana
- Voi havaita "valkoisia" ja "mustia" kohtauksia
- Voi toimia RGB- ja YUV-väriavaruuksissa
- Voi käsitellä osan mediatiedostosta - käyttäjä voi määrittää käsittelyn aloitus- ja lopetuspaikat
Demoversio ja hinta
Ota yhteyttä minuun.
Dokumentaatio
sdScenesMergeKind enum
Käytetään antamaan ohjeita siitä, mitä lyhyille kohtauksille tehdään.
sdMergeDelete = 0, | Lyhyt kohtaus poistettu |
sdMergeWithPrev = 1, | Lyhyt kohtaus yhdistetty edelliseen |
sdMergeWithNext = 2, | Lyhyt kohtaus yhdistetty seuraavaan |
sdMergeWithBoth = 3 | Lyhyet (keskimmäiset), edelliset ja seuraavat kohtaukset yhdistetty yhdeksi kohtaukseksi |
DetectorParameters -rakenne
Tämä rakenne sisältää kohtausten tunnistusmoottorin parametrit.
BSTR VideoFileName; | Koko videotiedoston nimi tunnistusta varten. |
int Threshold; | Tunnistuskynnysarvo. Suositellut oletusarvot ovat 19 RGB-väriavaruudelle ja 5 YUV:lle. Voi olla 0–255. Tämä parametri on tärkein. Kun kahden kuvan välinen ero on suurempi kuin tämä arvo, uusi kohtaus alkaa. Näin ollen: alempi Threshold - enemmän kohtauksia. |
int UpLumaTresh; | Käytetään "valkoisissa häivytyksissä" tunnistuksessa. Suositeltu oletusarvo -1. Voi olla -1–255. "-1" poistaa tämän ominaisuuden käytöstä. Kun yleinen kuvan kirkkaus on suurempi kuin tämä arvo, uusi kohtaus alkaa. Tällä ominaisuudella on mahdollista määrittää tällainen kirkkaiden kuvien sarja erilliseksi kohtaukseksi. |
int BottomLumaTresh; | Käytetään "mustissa häivytyksissä" tunnistuksessa. Suositeltu oletusarvo -1. Voi olla -1–255. "-1" poistaa tämän ominaisuuden käytöstä. Kun yleinen kuvan kirkkaus on pienempi kuin tämä arvo, uusi kohtaus alkaa. Tällä ominaisuudella on mahdollista määrittää tällainen tummien kuvien sarja erilliseksi kohtaukseksi. |
int MinSceneLength; | Asettaa tunnistetun kohtauksen vähimmäiskeston (kuvissa). |
int RegisterGraph; | Hallitsee sisäisen käsittelykaavion rekisteröintiä
Running Object Table (ROT) -taulukossa. Voi olla 1 (rekisteröity ROT:iin) tai 0 (ei rekisteröidy). |
BSTR SourceFilterMoniker; | Näyttönimi halutulle lähdesuodattimen monikerille, jota käytetään sisäisessä käsittelykaaviossa. Jos NULL - käytetään oletussuodatinta. |
BSTR SplitterFilterMoniker; | Näyttönimi halutulle jakajansuodattimen monikerille, jota käytetään sisäisessä käsittelykaaviossa. Jos NULL - käytetään oletussuodatinta. |
BSTR DecoderFilterMoniker; | Näyttönimi halutulle dekooderisuodattimen monikerille, jota käytetään sisäisessä käsittelykaaviossa. Jos NULL - käytetään oletussuodatinta. |
sdScenesMergeKind Merge; | Kun kohtauksen pituus on pienempi kuin MinSceneLength, kohtausta muokataan tämän parametrin arvon mukaan. |
DetectorParameters2 -rakenne
Tämä rakenne laajentaa DetectorParameters -rakenteessa määritettyjä kohtauksen tunnistusmoottorin parametreja. DetectorParameters-jäsenten lisäksi se sisältää:
int UseYUV; | Mahdollistaa väriavaruuden valinnan kohtauksen tunnistukseen. Voi olla 1 (YUY2) tai 0 (RGB24). |
int Pad; | Varattu |
double StartPosition; | Määrittää median aloituspaikan kohtauksen tunnistusta varten sekunneissa. Jos tämä on nollasta poikkeava, älä unohda, että kaikki kohtausajat ovat suhteessa tähän paikkaan. |
double StopPosition; | Määrittää median lopetuspaikan kohtauksen tunnistusta varten sekunneissa. Aseta nollaksi, jos haluat ohittaa. |
ThumbnailsParameters -rakenne
Tämä rakenne sisältää pikkukuvien luontiparametrit.
int JpegFormat; | Valitse tiedostomuoto. 0 - luo BMP-tiedostoja, 1 - luo JPEG-tiedostoja. |
int JpegQuality; | JPEG-pakkauslaatu. Kokonaisluku väliltä 0–100. |
int ImagesPerScene; | Kuvien määrä kohtausta kohti. 1 - vain aloituskuva, 2 - jokaisen kohtauksen aloitus- ja lopetuskuva. |
double Scale; | Pikkukuvan skaalauskerroin. 1 - täysikokoinen kuva. Liukulukuarvo. |
BSTR FileName; | Pikkukuvien tiedostonimien malli. Merkkijono "C" "printf" -funktiolle, jossa on yksi kokonaislukukenttä. |
ISceneDetector -liittymä
Tämä liittymä tarjoaa menetelmiä kohtauksen tunnistukseen:
DetectScenesInFile -menetelmä
HRESULT _stdcall DetectScenesInFile([in] DetectorParameters *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY(long) *Scenes );
Tämä on pääkohtauksen tunnistusmenetelmä.
Välitä tunnistusparametrit Params- ja osoitin SAFEARRAY-muuttujaan Scenes.
Jos Scenes on NULL-funktio, se ei palauta tunnistettujen kohtausten luetteloa.
Soittajan ei tarvitse luoda SafeArray-muuttujaa ennen tämän menetelmän kutsumista.
Jos Scenes ei ole NULL ja funktion kutsun jälkeen *Scenes ei ole myöskään NULL, soittajan on tuhottava *Scenes SafeArray -muuttuja.
*Scenes on kaksiulotteinen taulukko. Jokaiselle löydetylle kohtaukselle on kaksi pitkää arvoa: kohtauksen alku- ja lopetuskuvanumerot. Nämä arvot ovat suhteessa käsittelyn aloitusmedian paikkaan.
Välitä muu kuin NULL-osoitin muodossa ThumbnailsParams pikkukuvien luonnin kytkemiseksi päälle ja sen parametrien määrittämiseksi. Välitä NULL poistaaksesi pikkukuvien luonnin käytöstä.Palauttaa HRESULT -arvon. Mahdollisia arvoja ovat muun muassa seuraavat:
0 Onnistui 0x80040601 Määrittelemätön virhe 0x80040602 DirectShow-muuttujaa ei ole asennettu tai versio on liian vanha 0x80040603 Videon kestoa ei voi hankkia. Voi olla still-kuva 0x80040604 Virheellinen argumentti 0x80040605 Laitekontekstiä ei voi luoda 0x80040606 Objekti on varattu toiselle tehtävälle 0x80040607 Kuvanopeus on nolla. Voi olla still-kuva 0x80040608 Kaaviota ei voi luoda
ISceneDetector2 -liittymä
Tämä liittymä on johdettu ISceneDetector -liittymästä ja tarjoaa laajennettuja menetelmiä kohtauksen tunnistukseen. ISceneDetector -liittymältä perittyjen menetelmien lisäksi ISceneDetector2 -liittymä näyttää seuraavat menetelmät:
DetectScenesInFile2 -menetelmä
HRESULT _stdcall DetectScenesInFile2([in] DetectorParameters2 *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY(long) *Scenes );
Toisin kuin DetectScenesInFile, tämä menetelmä käyttää DetectorParameters2 -parametrijoukkoa, joten voit määrittää väriavaruuden, aloitus- ja lopetuskäsittelypaikat.
Kiinnitä huomiota siihen, että tämän menetelmän palauttamat kohtausten aloitus- ja lopetusarvot ovat suhteessa arvoon Params.StartPosition .
Katso DetectScenesInFile -kuvaus saadaksesi lisätietoja.GetFrameRate -menetelmä
HRESULT _stdcall GetFrameRate([out, retval] double *pFrameRate );
Palauttaa viimeksi käsitellyn tiedoston videon kuvanopeuden. Hyödyllinen ajan muuntamiseen kuvanumeroksi.
Palauttaa S_OK tai E_INVALIDARG, jos pFrameRate on NULL.
ISceneDetectorEvents -tapahtumaliittymä
Tämä tapahtumaliittymä tarjoaa menetelmiä kohtauksen tunnistustietojen noutamiseen reaaliajassa.
NewScene -menetelmä
HRESULT NewScene([in] long SceneIndex, [in] long Start, [in] long Stop );
Ilmaisin käynnistää tapahtuman, kun uusi kohtaus on määritetty.
SceneIndex alkaa 0:sta.
Start ja Stop alkavat myös 0:sta ja ovat kuvanumeroita.
Kun käsittely on aloitettu DetectScenesInFile2 -menetelmällä, Start- ja Stop- arvot ovat suhteessa Params.StartPosition -arvoon.Status -menetelmä
HRESULT Status([in] long ScenesFound, [in] long CurrentFrame, [in] long TotalFrames, [out] long *AbortProcess );
Tapahtuma käynnistetään 50 ms:n välein ja se ilmoittaa asiakkaalle prosessin tilasta.
AbortProcess on osoitin muuttujaan. Siten asiakas voi asettaa *AbortProcess-muuttujan arvoon 1 peruuttaakseen nykyisen kohtauksen tunnistuksen.