Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
[A laphoz társított funkció, Windows Media Format 11 SDKegy régi funkció. A Forrásolvasó és a Kiírófelülmúlta. Forrásolvasó és Fogadó író Windows 10-hez és Windows 11-hez lett optimalizálva. A Microsoft határozottan javasolja, hogy az új kód a Source Reader és a Sink Writer használja a Windows Media Format 11 SDKhelyett, ha lehetséges. A Microsoft javasolja, hogy az örökölt API-kat használó meglévő kódot át kell írni az új API-k használatára, ha lehetséges.]
A jelölő egy ASF-fájl nevesített pontja. Minden jelölő egy névből és egy kapcsolódó időből áll, amely a fájl kezdetétől eltolásként van mérve. Az alkalmazások jelölőkkel rendelhetnek neveket a tartalom különböző pontjaihoz, megjeleníthetik ezeket a neveket a felhasználónak, majd megkereshetik a jelölőpozíciókat. Az alkalmazások hozzáadhatnak vagy eltávolíthatnak jelölőket egy meglévő ASF-fájlból.
Az IWMHeaderInfo felület a jelölőkkel való munka módszereit tartalmazza. A metaadat-szerkesztő objektum támogatja a jelölők hozzáadását és eltávolítását. Az író- és olvasóobjektumok lekérhetik a jelölőket, de nem adhatnak hozzá vagy távolíthatnak el jelölőket.
Jelölők hozzáadása
Jelölő hozzáadásához kérdezze le a IWMHeaderInfo felület metaadat-szerkesztőjében. Ezután hívja meg a IWMHeaderInfo::AddMarker metódust, amely széles karaktersorozatként adja meg a jelölőnevet, valamint a 100 nanoszekundumos egységekben megadott időt. Az idő nem haladhatja meg a fájl időtartamát. Két jelölőnek is lehet azonos ideje.
Az alábbi példa több jelölőt ad hozzá egy fájlhoz:
IWMMetadataEditor *pEdit = 0;
IWMHeaderInfo *pInfo = 0;
// Create the metadata editor object.
WMCreateEditor(&pEdit);
pEdit->Open(L"C:\\example.wmv");
pEdit->QueryInterface(IID_IWMHeaderInfo, (void**)&pInfo);
// Add the markers. Note that we add the last ones first. Do this when possible
// for improved performance when writing the markers to the file.
hr = pInfo->AddMarker(L"End", 520000000); // 52 sec.
hr = pInfo->AddMarker(L"Segue", 350000000); // 35 sec.
hr = pInfo->AddMarker(L"Intro", 15000000); // 1.5 sec.
// Commit changes and clean up.
pEdit->Flush();
pEdit->Close();
pInfo->Release();
pEdit->Release();
Jelölők eltávolítása
Jelölő eltávolításához hívja meg IWMHeaderInfo::RemoveMarker, és adja meg az eltávolítani kívánt jelölő indexét. A jelölők automatikusan növekvő időrendben vannak rendezve, így mindig a 0 index az első jelölő. Vegye figyelembe, hogy RemoveMarker meghívása módosítja a következő jelölők indexszámát. A következő kód, amelyben pInfo egy IWMHeaderInfo felületre mutató mutató, eltávolítja az összes jelölőt egy fájlból:
WORD count = 0;
pInfo->GetMarkerCount(&count);
while (count--)
{
pInfo->RemoveMarker(0);
}
Jelölők lekérése
Egy jelölő nevének és időpontjának lekéréséhez hajtsa végre a következő lépéseket:
- Hívja meg a IWMHeaderInfo::GetMarkerCount metódust annak megállapításához, hogy a fájl hány jelölőt tartalmaz.
- Határozza meg a jelölőnévhez szükséges karakterlánc méretét. Ehhez hívja meg a IWMHeaderInfo::GetMarker metódust. Adja meg a lekérni kívánt jelölő indexét, és NULL értéket a karakterlánc pufferhez (a pwszMarkerName paraméterhez). A metódus visszaadja a sztring hosszát, beleértve a "\0" karakter végződését a pcchMarkerNameLen paraméterben.
- A név fogadásához foglaljon le egy szélességi karakterű karakterláncot.
- Újra hívja meg a GetMarker-t, de ezúttal adja meg a karakterlánc címét a pwszMarkerName paraméterben. A metódus beírja a jelölő nevét a sztringbe, és visszaadja a jelölő időpontját a pcnsMarkerTime paraméterben.
A következő kód minden jelölőn végigmegy, és lekéri a nevet és az időt:
WORD cMarkers = 0;
HRESULT hr = pInfo->GetMarkerCount(&cMarkers);
WCHAR *wszName = 0;
WORD len = 0;
for (WORD iMarker = 0; iMarker < cMarkers; ++iMarker)
{
QWORD rtTime = 0;
WORD req_len = 0;
hr = pInfo->GetMarker(iMarker, 0, &req_len, &rtTime);
// Reallocate if necessary.
if (len < req_len)
{
delete[] wszName;
wszName = new WCHAR[req_len];
len = req_len;
}
hr = pInfo->GetMarker(iMarker, wszName, &req_len, &rtTime);
// Display the name...
}
delete[] wszName;
Jelölő keresése
Ha jelölőhelyről szeretné elindítani a lejátszást, hívja meg az olvasóobjektum IWMReaderAdvanced2::StartAtMarker metódust, és adja meg a jelölő indexét. A többi paraméter megegyezik az IWMReader::Start metóduséval. Az alábbi példa lekérdezi az olvasót az IWMReaderAdvanced2 felülethez, és az első jelölőre keres.
IWMReaderAdvanced2 *pReader2 = 0
WORD iMarkerIndex = 0;
hr = pReader->QueryInterface(IID_IWMReaderAdvanced2, (void**)&pReader2);
if (SUCCEEDED(hr))
{
hr = pPlayer2->StartAtMarker(iMarkerIndex, 0, 1.0, 0);
pPlayer2->Release();
}
Kapcsolódó témakörök