Scene Detector - Video Scene Detection COM-objekti
Kuvaus
Scene Detector on tehokas COM-komponentti kohtausten tunnistamiseen ja käsittelyyn. Se sisältää palkittuja HandySaw DS -tekniikoita erittäin tarkkaan ja nopeaan optiseen kohtauksen tunnistamiseen. 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 ja mahdollistaa sen käytön useissa ohjelmointikielissä ja ympäristöissä. Jos etsit erillistä sovellusta kohtauksen havaitsemiseen, voit käyttää HandySaw DS:ää seuraamalla tätä linkkiä .
Scene Detector -objekti käsittelee videotiedoston ja palauttaa luettelon löydetyistä kohtauksista. Se voi myös tallentaa pikkukuvat jokaisesta kohtauksesta ja ilmoittaa soittajasovellukselle välittömästi jokaisesta uudesta löydetystä kohtauksesta takaisinsoittoliitäntöjen kautta käsittelyn aikana.
Pääpiirteet
- Tunnistaa kohtaukset melkein mistä tahansa videotiedostosta, jota Windows Media Player voi toistaa (DirectShow API:n käytön ansiosta)
- Nopea ja tarkka algoritmi
- Helppo integrointi
- Raportoi uusi kohtaus heti sen määrittämisen jälkeen käsittelyn aikana. Ei tarvitse odottaa havaitsemisen päättymistä
- Voi luoda pikkukuvia - ensimmäisen ja viimeisen kehyksen kuvia jokaisesta kohtauksesta ja tallentaa ne BMP- tai JPG-tiedostoina
- Mahdollista määrittää lähde-, jakaja- ja videodekooderisuodattimet, joita käytetään käsittelyn aikana
- Voi havaita "valkoiset" ja "mustat" kohtaukset
- Voi toimia RGB- ja YUV-värialueilla
- Voi käsitellä osan mediatiedostosta - käyttäjä voi määrittää käsittelyn aloitus- ja lopetuskohdat
Demoversio ja hinta
Ota yhteyttä minuun.
Dokumentointi
sdScenesMergeKind enum
Käytetään antamaan ohjeita mitä tehdä lyhyillä kohtauksilla.
sdMergeDelete = 0, | Lyhyt kohtaus poistettu |
sdMergeWithPrev = 1, | Lyhyt kohtaus yhdistetty edelliseen |
sdMergeWithNext = 2, | Lyhyt kohtaus sulautui seuraavaan |
sdMergeWithBoth = 3 | Lyhyet (keskikohta), edellinen ja seuraava kohtaus yhdistettiin yhdeksi kohtaukseksi |
DetectorParameters rakenne
Tämä rakenne sisältää kohtauksen tunnistusmoottorin parametrit.
BSTR VideoFileName; | Koko videotiedoston nimi havaitsemista varten. |
int Threshold; | Tunnistuskynnysarvo. Suositellut oletusarvot ovat 19 RGB-väriavaruudelle ja 5 YUV-väriavaruudelle. Voi olla 0-255. Tämä parametri on tärkein. Kun kahden kuvan ero on suurempi kuin tämä arvo, uusi kohtaus alkaa. Siten: alempi kynnys - enemmän kohtauksia. |
int UpLumaTresh; | Käytetään "valkoisten häivytysten" tunnistuksessa. Suositeltu oletusarvo -1. Voi olla -1 - 255. "-1" poistaa tämän ominaisuuden käytöstä. Kun ruudun kokonaiskirkkaus on suurempi kuin tämä arvo, uusi kohtaus alkaa. Tämän ominaisuuden avulla on mahdollista määrittää tällaisten kirkkaiden ruutujen sarja erilliseksi kohtaukseksi. |
int BottomLumaTresh; | Käytetään "mustien häivytysten" tunnistuksessa. Suositeltu oletusarvo -1. Voi olla -1 - 255. "-1" poistaa tämän ominaisuuden käytöstä. Kun kuvan kokonaiskirkkaus on tätä arvoa pienempi, uusi kohtaus alkaa. Tämän ominaisuuden avulla on mahdollista määrittää tällaisten tummien kehysten sarja erilliseksi kohtaukseksi. |
int MinSceneLength; | Asettaa havaitun kohtauksen vähimmäiskeston (kehyksissä). |
int RegisterGraph; | Ohjaa sisäisen käsittelykaavion rekisteröintiä Running Object Table (ROT) -taulukkoon. Voi olla 1 (rekisteröidy ROT:iin) tai 0 (ei rekisteröidy). |
BSTR SourceFilterMoniker; | Sisäisessä käsittelykaaviossa käytetyn halutun lähdesuodattimen monikerin näyttönimi. Jos NULL - oletussuodatin käytetty. |
BSTR SplitterFilterMoniker; | Sisäisessä käsittelykaaviossa käytetyn halutun jakajasuodatinmonikerin näyttönimi. Jos NULL - oletussuodatin käytetty. |
BSTR DecoderFilterMoniker; | Sisäisessä prosessointikaaviossa käytetyn halutun dekooderin suodattimen nimimerkin näyttönimi. Jos NULL - oletussuodatin käytetty. |
sdScenesMergeKind Merge; | Kun kohtauksen pituus on pienempi kuin MinSceneLength, kohtausta muutetaan tämän parametrin arvon mukaan. |
DetectorParameters2 rakenne
Tämä rakenne laajentaa DetectorParameters- rakenteessa määritettyjä kohtauksen tunnistusmoottorin parametreja. DetectorParametersin jäsenten lisäksi se sisältää:
int UseYUV; | Mahdollistaa väriavaruuden valitsemisen kohtauksen tunnistukseen. Voi olla 1 (YUY2) tai 0 (RGB24). |
int Pad; | Varattu |
double StartPosition; | Määrittää median aloituskohdan kohtauksen tunnistukseen sekunneissa. Jos tämä ei ole nolla, älä unohda, että kaikki kohtausajat ovat suhteessa tähän kohtaan. |
double StopPosition; | Määrittää median pysäytyskohdan kohtauksen tunnistukseen sekunneissa. Ohita asettamalla nollaan. |
ThumbnailsParameters rakenne
Tämä rakenne sisältää pikkukuvien luontiparametreja.
int JpegFormat; | Valitse tiedostomuoto. 0 - luo BMP-tiedostoja, 1 - luo JPEG-tiedostoja. |
int JpegQuality; | JPEG-pakkauksen laatu. Kokonaisluku 0-100. |
int ImagesPerScene; | Kuvia kohtausnumeroa kohden. 1 - vain aloituskehys, 2 - kunkin kohtauksen alku- ja loppukehys. |
double Scale; | Pikkukuvan skaalaustekijä. 1 - täysikokoinen kuva. Liukulukuarvo. |
BSTR FileName; | Pikkukuvien tiedostonimien malli. Merkkijono "C" "printf"-funktiolle, jossa on yksi kokonaislukukenttä. |
ISceneDetector käyttöliittymä
Tämä käyttöliittymä tarjoaa menetelmiä kohtauksen havaitsemiseen:
DetectScenesInFile -menetelmä
HRESULT _stdcall DetectScenesInFile ([in] DetectorParameters *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY (pitkä) *Scenes );
Tämä on tärkein kohtauksen tunnistusmenetelmä.
Ohjaa tunnistusparametrit Params -kohdassa ja osoita SFEARRAY-kohtaa Scenes-kohdassa.
Jos kohtaukset on NULL, toiminto ei palauta havaittujen kohtausten luetteloa.
Soittajan ei tarvitse luoda SafeArraya ennen tämän menetelmän kutsumista.
Jos Scenes ei ole NULL ja funktiokutsun jälkeen *Scenes ei ole NULL liian kutsujan täytyy tuhota *Scenes SafeArray.
*Scenes on kaksiulotteinen matriisi. Jokaiselle löydetylle kohtaukselle on kaksi pitkää arvoa: kohtauksen aloitus- ja lopetuskehysnumerot. Nämä arvot ovat suhteessa käsittelyn aloitusmedian sijaintiin.
Anna ei-NULL-osoitin ThumbnailsParams- asetukseksi ottaaksesi pikkukuvien luomisen käyttöön ja määrittääksesi sen parametrit. Anna NULL poistaaksesi pikkukuvien luomisen käytöstä.Palauttaa arvon HRESULT . Mahdollisia arvoja ovat seuraavat:
0 Menestys 0x80040601 Määrittelemätön virhe 0x80040602 DirectShowta ei ole asennettu tai versio on liian vanha 0x80040603 Videon kestoa ei voi saada. Voi olla still-kuva 0x80040604 Huono argumentti 0x80040605 Laitekontekstia ei voi luoda 0x80040606 Objekti on varattu toisen tehtävän kanssa 0x80040607 Kuvataajuus on nolla. Voi olla still-kuva 0x80040608 Graafia ei voi rakentaa
ISceneDetector2 käyttöliittymä
Tämä käyttöliittymä on peräisin ISceneDetector- liittymästä ja tarjoaa laajennettuja menetelmiä kohtauksen havaitsemiseen. ISceneDetectorista perittyjen menetelmien lisäksi ISceneDetector2- käyttöliittymä paljastaa seuraavat menetelmät:
DetectScenesInFile2-menetelmä
HRESULT _stdcall DetectScenesInFile2 ([in] DetectorParameters2 *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY (pitkä) *Scenes );
Toisin kuin DetectScenesInFile , tämä menetelmä käyttää DetectorParameters2- parametreja, joten se mahdollistaa väriavaruuden määrittämisen sekä käsittelyn aloitus- ja lopetusasennon.
Kiinnitä huomiota siihen, että tällä menetelmällä palautetut kohtausten aloitus- ja lopetusarvot ovat suhteessa Params.StartPosition- arvoon.
Katso lisätietoja DetectScenesInFile- kuvauksesta.GetFrameRate-menetelmä
HRESULT _stdcall GetFrameRate ([out, retval] double *pFrameRate );
Palauttaa viimeksi käsitellyn tiedoston videokuvanopeuden. Hyödyllinen aika kehysnumeron kääntämiseen.
Palauttaa S_OK tai E_INVALIDARG, jos pFrameRate on NULL.
ISceneDetectorEvents-tapahtumien käyttöliittymä
Tämä tapahtumarajapinta tarjoaa menetelmiä kohtauksen tunnistustietojen hakemiseen reaaliajassa.
NewScene-menetelmä
HRESULT NewScene ([in] long SceneIndex, [in] long Start, [in] long Stop );
Ilmaisimen laukaisema tapahtuma, kun uusi kohtaus määritetään.
SceneIndex alkaa 0:sta.
Aloitus ja lopetus alkavat myös 0:sta ja ovat kehysnumeroita.
Kun käsittely aloitettiin DetectScenesInFile2- menetelmän avulla, aloitus- ja lopetusarvot ovat suhteessa Params.StartPosition- arvoon.Statusmenetelmä
HRESULT -tila ([in] long ScenesFound, [in] long CurrentFrame, [in] long TotalFrames, [out] long *AbortProcess );
Tapahtuma käynnistyy 50 ms:n välein ja ilmoittaa asiakkaalle prosessin tilasta.
AbortProcess on osoitin muuttujaan. Näin asiakas voi asettaa * AbortProcess -arvon 1:ksi peruuttaakseen nykyisen kohtauksen tunnistuksen.