MediaFrameReference 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
包裝函式類別,表示從 MediaFrameSource取得的框架。 使用這個類別的屬性來存取來源所提供的特定畫面類型,例如 VideoMediaFrame 或 BufferMediaFrame。
public ref class MediaFrameReference sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MediaFrameReference final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MediaFrameReference : System.IDisposable
Public NotInheritable Class MediaFrameReference
Implements IDisposable
- 繼承
- 屬性
- 實作
Windows 需求
裝置系列 |
Windows 10 Anniversary Edition (已於 10.0.14393.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v3.0 引進)
|
備註
若要從媒體畫面來源取得 MediaFrameReference 的實例,請在已初始化為使用所需媒體畫面來源的MediaCapture物件上呼叫CreateFrameReaderAsync來建立MediaFrameReader。 呼叫 StartAsync來啟動畫面讀取器之後,請呼叫 TryAcquireLatestFrame 以取得 MediaFrameReference,代表媒體畫面來源的最新畫面。
每個MediaFrameReader都會維護從TryAcquireLatestFrame取得之MediaFrameReference物件的迴圈緩衝區。 使用緩衝區中的所有 MediaFrameReference 物件之後, 後續對 TryAcquireLatestFrame 的呼叫會導致系統在最舊的緩衝區物件上呼叫 Close (或 Dispos ) e ,以便重複使用它。 處置物件之後,您就無法再使用它來存取框架資料。 基於這個理由,您不應該儲存比您實際處理框架還久的 MediaFrameReference 物件。 如果您的應用程式案例要求您保留對資料的參考時間較長,您應該使用提供的其中一個 API 來取得基礎資料。 其中包括:
當這些 API 不再使用時,應用程式必須負責呼叫 Close (或 Dispose) 這些 API 所傳回的物件。
重要
如果您存取MediaFrameReference 的 VideoMediaFrame屬性所提供的SoftwareBitmap或Direct3DSurface物件,系統會建立這些物件的強式參考,這表示當您在包含MediaFrameReference上呼叫Dispose時,不會處置這些物件。 這也適用于您從MediaFrameReference.VideoMediaFrame屬性取得的VideoFrame物件所提供的SoftwareBitmap或Direct3DSurface物件。 您必須針對要立即處置的物件明確地直接呼叫 SoftwareBitmap 或 Direct3DSurface 的 Dispose 方法。 否則,記憶體回收行程最終會釋放這些物件的記憶體,但您無法得知何時會釋放,而且如果配置的點陣圖或表面的數量超過系統允許的數量上限,新畫面的資料流就會停止。
如需使用 MediaFrameSource 擷取畫面的作法指引,請參閱 使用 MediaFrameReader 處理媒體畫面。
版本歷程記錄
Windows 版本 | SDK 版本 | 新增值 |
---|---|---|
1803 | 17134 | AudioMediaFrame |
屬性
AudioMediaFrame |
取得MediaFrameReference所包裝的AudioMediaFrame,如果這是所表示的框架類型。 |
BufferMediaFrame |
如果這是所表示的框架類型,則取得MediaFrameReference所包裝的BufferMediaFrame。 |
CoordinateSystem |
如果已定義,則取得所參考媒體畫面的空間座標系統。 |
Duration |
取得參考媒體框架的持續時間。 |
Format |
取得參考媒體框架的格式。 |
Properties |
取得參考框架之屬性的對應。 |
SourceKind |
取得媒體框架的來源 MediaFrameSource 類型,例如色彩、基礎結構或自訂來源。 |
SystemRelativeTime |
取得相對於系統的時間戳記,而且在相同裝置上的多個媒體來源之間可更正。 |
VideoMediaFrame |
取得MediaFrameReference所包裝的VideoMediaFrame,如果這是所表示的框架類型。 |
方法
Close() |
處置物件和相關聯的資源。 |
Dispose() |
執行與釋放 (Free)、釋放 (Release) 或重設 Unmanaged 資源相關聯之應用程式定義的工作。 |