COM-komponentti
Scene Detector
Videokohtausten tunnistus kehittäjille. Integroi se sovellukseesi COM-rajapinnan kautta.
Tietoja
Scene Detector on COM-komponentti, joka perustuu HandySaw DS -kohtaustunnistusteknologiaan. Se käsittelee videotiedoston ja palauttaa listan tunnistetuista kohtauksista ruuduntarkoin rajoin. Komponentti voi myös luoda pikkukuvia jokaisesta kohtauksesta ja raportoida uusista kohtauksista reaaliajassa takaisinkutsurajapintojen kautta. Sinun ei tarvitse odottaa koko tunnistusprosessin valmistumista.
COM-komponentti noudattaa standardiarkkitehtuuria, mikä tekee siitä käytettävän lähes missä tahansa Windows-kehitysympäristössä. Jos tarvitset erillisen työpöytätyökalun kehittäjäkomponentin sijaan, HandySaw DS on oikea valinta.
Ominaisuudet
Laaja formaattituki
Käsittelee kaikki videotiedostot, jotka Windows Media Player voi toistaa DirectShow API:n kautta.
Reaaliaikaiset takaisinkutsut
Raportoi jokaisesta uudesta kohtauksesta heti, kun se löytyy. Sovelluksesi saa tulokset käsittelyn aikana.
Pikkukuvien luonti
Tallentaa valinnaisesti jokaisen kohtauksen ensimmäisen ja viimeisen ruudun BMP- tai JPEG-tiedostoina millä tahansa mittakaavalla.
RGB- ja YUV-väriavaruudet
Tunnistus voi toimia RGB24- tai YUY2-väriavaruudessa; molemmilla on omat suositellut oletuskynnysarvonsa.
Valkoiseen ja mustaan häivytysten tunnistus
Konfiguroitavat luminanssikynnykset tunnistavat valkoiseen ja mustaan häivytyssiirtymät erillisinä kohtauksina.
Osittainen tiedostokäsittely
Määritä alku- ja loppukohdat tunnistaaksesi kohtauksia vain valitusta mediatiedoston segmentistä.
Mukautettu suodatinputki
Ohita sisäisesti käytetyt lähde-, jakaja- ja dekooderi-DirectShow-suodattimet maksimaalisen yhteensopivuuden saavuttamiseksi.
Lyhyiden kohtausten yhdistäminen
Määritettyä minimipituutta lyhyemmät kohtaukset yhdistetään automaattisesti naapureihinsa tai poistetaan.
Demo ja hinta
Ota yhteyttä saadaksesi demoversion ja hintatiedot.
API-viite
sdScenesMergeKind enum
Määrittää, miten lyhyitä kohtauksia käsitellään tunnistuksen jälkeen.
| sdMergeDelete = 0 | Lyhyt kohtaus poistetaan. |
| sdMergeWithPrev = 1 | Lyhyt kohtaus yhdistetään edelliseen kohtaukseen. |
| sdMergeWithNext = 2 | Lyhyt kohtaus yhdistetään seuraavaan kohtaukseen. |
| sdMergeWithBoth = 3 | Lyhyt kohtaus, edellinen kohtaus ja seuraava kohtaus yhdistetään yhdeksi. |
DetectorParameters structure
Kohtaustunnistusmoottorin ydinparametrit.
| BSTR VideoFileName | Käsiteltävän videotiedoston koko polku. |
| int Threshold | Tunnistusherkkyys. Alue 0-255. Suositellut oletukset: 19 (RGB) ja 5 (YUV). Uusi kohtaus alkaa, kun kahden peräkkäisen ruudun välinen ero ylittää tämän arvon. Pienemmät arvot tuottavat enemmän kohtauksia. |
| int UpLumaTresh | Valkoiseen häivytyksen kynnys. Alue -1-255. Arvo -1 poistaa tämän ominaisuuden käytöstä. Kun ruudun yleinen kirkkaus ylittää tämän arvon, alkaa uusi kohtaus, joka ryhmittelee kirkkaat ruudut yhteen. |
| int BottomLumaTresh | Mustaan häivytyksen kynnys. Alue -1-255. Arvo -1 poistaa tämän ominaisuuden käytöstä. Kun ruudun yleinen kirkkaus laskee tämän arvon alapuolelle, alkaa uusi kohtaus, joka ryhmittelee tummat ruudut yhteen. |
| int MinSceneLength | Kohtauksen vähimmäiskesto ruutuina. Tätä arvoa lyhyemmät kohtaukset muokataan Merge-kentän mukaisesti. Suositeltu oletus: 5. |
| int RegisterGraph | Sisäisen käsittelykaavion ROT-rekisteröinti. 1: rekisteröi. 0: älä rekisteröi. |
| BSTR SourceFilterMoniker | Halutun lähdesuodattimen näyttönimi. NULL: käytä oletusta. |
| BSTR SplitterFilterMoniker | Halutun jakajasuodattimen näyttönimi. NULL: käytä oletusta. |
| BSTR DecoderFilterMoniker | Halutun dekooderisuodattimen näyttönimi. NULL: käytä oletusta. |
| sdScenesMergeKind Merge | Yhdistämisstrategia, jota käytetään, kun tunnistettu kohtaus on lyhyempi kuin MinSceneLength. |
DetectorParameters2 structure
Laajentaa DetectorParameters-rakennetta väriavaruuden valinnalla ja osittaisella tiedostokäsittelyllä. Sisältää kaikki DetectorParameters-kentät sekä seuraavat.
| int UseYUV | Väriavaruus. 1: YUY2. 0: RGB24. |
| int Pad | Varattu. |
| double StartPosition | Käsittelyn aloituskohta sekunteina. Kun arvo ei ole nolla, kaikki palautetut kohtausajat ovat suhteessa tähän siirtymään. |
| double StopPosition | Käsittelyn lopetuskohta sekunteina. 0: käsittele tiedoston loppuun asti. |
ThumbnailsParameters structure
Ohjaa pikkukuvien luontia. Lähetä osoitin tähän rakenteeseen ottaaksesi pikkukuvat käyttöön, tai NULL poistaaksesi ne käytöstä.
| int JpegFormat | Tulostusmuoto. 0: BMP. 1: JPEG. |
| int JpegQuality | JPEG-pakkauksen laatu, 0-100. |
| int ImagesPerScene | 1: vain aloitusruutu. 2: aloitus- ja loppuruutu per kohtaus. |
| double Scale | Pikkukuvan skaalauskerroin. 1.0: täysi koko. |
| BSTR FileName | Tiedostonimimalli, joka käyttää C printf -syntaksia yhdellä kokonaislukukentällä, esim. d:\dir\frame%05d.jpg. Ruudun numero korvaa %d-paikkamerkin. Vaatii täyden polun oikealla tiedostopäätteellä. |
ISceneDetector interface
Kohtaustunnistuksen ydinrajapinta.
DetectScenesInFile
HRESULT _stdcall DetectScenesInFile(
[in] DetectorParameters *Params,
[in] ThumbnailsParameters *ThumbnailsParams,
[out] SAFEARRAY(long) *Scenes
);
Pääasiallinen tunnistusmetodi. Kutsujan ei tarvitse luoda SafeArray-taulukkoa etukäteen – välitä osoitin SAFEARRAY-muuttujaan. Jos *Scenes ei ole NULL kutsun jälkeen, kutsujan on tuhottava se. Tulos on kaksiulotteinen taulukko. Jokaiselle kohtaukselle kaksi long-arvoa antavat alku- ja loppuruudun numerot suhteessa käsittelyn aloituskohtaan. Välitä ei-NULL ThumbnailsParams ottaaksesi pikkukuvien luonnin käyttöön.
| HRESULT | Merkitys |
|---|---|
| 0 | Onnistui |
| 0x80040601 | Määrittelemätön virhe |
| 0x80040602 | DirectShow ei ole asennettu tai versio on liian vanha |
| 0x80040603 | Ei voida määrittää videon kestoa - kyseessä voi olla still-kuva |
| 0x80040604 | Virheellinen argumentti |
| 0x80040605 | Ei voida luoda laitekontekstia |
| 0x80040606 | Objekti on varattu toisella tehtävällä |
| 0x80040607 | Ruudunpäivitysnopeus on nolla - kyseessä voi olla still-kuva |
| 0x80040608 | Ei voida rakentaa kaaviota |
ISceneDetector2 interface
Laajentaa ISceneDetector-rajapintaa. Perii kaikki sen metodit ja lisää seuraavat.
DetectScenesInFile2
HRESULT _stdcall DetectScenesInFile2(
[in] DetectorParameters2 *Params,
[in] ThumbnailsParameters *ThumbnailsParams,
[out] SAFEARRAY(long) *Scenes
);
Sama kuin DetectScenesInFile, mutta käyttää DetectorParameters2-rakennetta, mahdollistaen väriavaruuden valinnan ja osittaisen tiedostokäsittelyn. Palautetut kohtauksen alku- ja loppuarvot ovat suhteessa Params.StartPosition-arvoon.
GetFrameRate
HRESULT _stdcall GetFrameRate(
[out, retval] double *pFrameRate
);
Palauttaa viimeksi käsitellyn tiedoston ruudunpäivitysnopeuden. Hyödyllinen ruutunumeroiden muuntamiseen aikaleimoiksi. Palauttaa S_OK, tai E_INVALIDARG, jos pFrameRate on NULL.
ISceneDetectorEvents interface
Takaisinkutsurajapinta reaaliaikaisille tunnistustapahtumille. Toteuta sovelluksessasi vastaanottaaksesi tulokset sitä mukaa kun niitä löytyy.
NewScene
HRESULT NewScene(
[in] long SceneIndex,
[in] long Start,
[in] long Stop
);
Laukaistaan, kun uusi kohtaus on viimeistelty. SceneIndex alkaa 0:sta. Start ja Stop ovat ruutunumeroita alkaen 0:sta. Kun käsittely aloitettiin DetectScenesInFile2-metodilla, molemmat arvot ovat suhteessa Params.StartPosition-arvoon.
Status
HRESULT Status(
[in] long ScenesFound,
[in] long CurrentFrame,
[in] long TotalFrames,
[out] long *AbortProcess
);
Laukaistaan 50 ms välein nykyisellä käsittelyn edistymisellä. Aseta *AbortProcess arvoon 1 peruuttaaksesi käynnissä olevan tunnistuksen.