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).
Suositeltu oletusarvo 5.
Voi olla 0– mikä tahansa positiivinen arvo.
Jos määritetyn kohtauksen pituus on pienempi kuin tämä arvo, tämä kohtaus yhdistetään edelliseen, seuraavaan tai molempiin kohtauksiin Merge-kentän arvon mukaan (katso alla).

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ä.
Esimerkiksi: "d:\filedir\filename%05d.jpg"
Sinun on määritettävä koko polku oikealla tunnisteella. Kuvan numero lisätään %d-symboleiden sijasta saadaksesi tietyn pikkukuvan tiedostonimen.

 

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.