Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]
Zarówno MSDV, jak i sterownik UVC mogą wyprowadzać dwa formaty DV: przeplatane audio-wideo lub tylko wideo. Przeplatane audio-wideo jest oryginalnym formatem z urządzenia. Format tylko wideo zawiera te same dane, ale przykłady są oznaczone jako bez danych audio. Format tylko wideo istnieje głównie pod kątem zgodności z aplikacjami korzystającymi z usługi Video dla systemu Windows. Aby uzyskać więcej informacji, zobacz Type-1 vs. Type-2 DV AVI Files.
sterownika MSDV
Sterownik MSDV ma dwa wyprowadzenia wyjściowe. Pierwszy numer PIN wyjściowy wysyła przeplatane dane, a drugi wyjściowy numer PIN wysyła dane tylko do wideo. Jednocześnie można podłączyć tylko jeden numer PIN wyjściowy. Aby wybrać format, połącz odpowiedni numer PIN danych wyjściowych. Aby znaleźć format, możesz użyć interfejsu IAMStreamConfig na wyprowadzeniu wyjściowym.
sterownik UVC
W przeciwieństwie do sterownika MSDV sterownik UVC dostarcza oba formaty z tego samego pinezki. Domyślny format to tylko wideo. Aby wybrać format, użyj interfejsu IAMStreamConfig na wyprowadzeniu wyjściowym. Wywołaj metodę GetStreamCaps, aby wyliczyć typy multimediów na wyprowadzeniu wyjściowym. Dla każdego typu nośnika, jeśli typ główny jest zgodny z żądanym formatem, wywołaj SetFormat i przekaż ten typ nośnika.
| Format | Typ główny |
|---|---|
| Przeplatane audio i wideo | MEDIATYPE_Interleaved |
| Tylko wideo | MEDIATYPE_Video |
Poniższa funkcja ustawia format na podstawie identyfikatora GUID typu głównego.
HRESULT SetStreamFormat(IAMStreamConfig *pConfig, const GUID& majorType)
{
if (pConfig == NULL)
{
return E_POINTER;
}
// Get the number of stream capabilities.
int count = 0, size = 0;
HRESULT hr = pConfig->GetNumberOfCapabilities(&count, &size);
if (FAILED(hr))
{
return hr;
}
// Allocate memory for the stream capabilities structure.
BYTE *pCaps = new BYTE[size];
if (pCaps == NULL)
{
return E_OUTOFMEMORY;
}
// Enumerate the stream capabilities.
bool bFoundType = false;
for (int ix = 0; ix < count; ix++)
{
AM_MEDIA_TYPE *pmt;
hr = pConfig->GetStreamCaps(ix, &pmt, pCaps);
if (FAILED(hr))
{
break;
}
else if (pmt->majortype == majorType)
{
// This is the media type we want.
bFoundType = true;
hr = pConfig->SetFormat(pmt);
DeleteMediaType(pmt);
break;
}
DeleteMediaType(pmt);
}
delete [] pCaps;
if (FAILED(hr))
{
return hr;
}
return bFoundType ? S_OK : E_FAIL;
}
Sterownik MSDV obsługuje również IAMStreamConfig, dzięki czemu można napisać kod, który działa dla obu typów urządzeń.
Tematy pokrewne
-
sterowanie kamery DV