MultiSourceMediaFrameReference Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Класс-оболочка, предоставляющий доступ к кадрам, связанным со временем, полученным из одного или нескольких объектов MediaFrameSource . Вызовите TryGetFrameReferenceBySourceId , чтобы получить Объект MediaFrameReference , представляющий кадр из определенного источника кадров мультимедиа.
public ref class MultiSourceMediaFrameReference sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 262144)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MultiSourceMediaFrameReference final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 262144)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MultiSourceMediaFrameReference : System.IDisposable
Public NotInheritable Class MultiSourceMediaFrameReference
Implements IDisposable
- Наследование
- Атрибуты
- Реализации
Требования к Windows
Семейство устройств |
Windows 10 Creators Update (появилось в 10.0.15063.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v4.0)
|
Комментарии
Чтобы получить экземпляр MultiSourceMediaFrameReference из источника кадра мультимедиа, создайте Объект MultiSourceMediaFrameReader , вызвав Метод CreateMultiSourceFrameReaderAsync для объекта MediaCapture , передав объекты MediaFrameSource , из которых требуется прочитать. После запуска вызова StartAsync вызовите TryAcquireLatestFrame, чтобы получить Объект MultiSourceMediaFrameReference , содержащий последние коррелированные кадры из источников кадров мультимедиа.
Получите кадр мультимедиа, связанный со временем, из определенного источника кадров мультимедиа, вызвав MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId и передав значение свойства MediaFrameSourceInfo.Id для нужного источника кадра мультимедиа.
Каждый объект MultiSourceMediaFrameReader поддерживает циклический буфер объектов MediaFrameReference , полученных из MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId. После использования всех объектов MediaFrameReference в буфере последующие вызовы TryAcquireLatestFrame приведут к тому, что система вызовет метод Close (или Dispose в C#) для самого старого объекта буфера, чтобы повторно использовать его. После удаления объекта вы больше не сможете использовать его для доступа к данным кадра. По этой причине не следует хранить объект MediaFrameReference дольше, чем требуется для обработки кадра. Если в сценарии приложения требуется дольше сохранять ссылку на данные, следует использовать один из предоставленных API для получения базовых данных. Эти способы включают перечисленные ниже.
- BufferMediaFrame.Buffer
- VideoMediaFrame.SoftwareBitmap
- VideoMediaFrame.GetVideoFrame
- VideoMediaFrame.CameraIntrinsics . Приложение отвечает за вызов Close (или Dispose) для объектов, возвращаемых этими API, когда они больше не используются.
Важно!
Если вы осуществляете доступ к объектам SoftwareBitmap или Direct3DSurface, предоставляемым свойством VideoMediaFrame класса MediaFrameReference, система создает строгую ссылку на эти объекты, что означает, что они не будут удален при вызове метода Dispose в содержащем классе MediaFrameReference. Необходимо явно вызвать метод Dispose класса SoftwareBitmap или Direct3DSurface непосредственно для объектов, чтобы немедленно удалить их. В противном случае сборщик мусора в конечном итоге освободит память для этих объектов, однако узнать, когда это произойдет, невозможно, и если количество выделенных растровых изображений или поверхностей превышает максимальное количество, разрешенное системой, поток новых кадров будет остановлен.
Инструкции по использованию MediaFrameSource для захвата кадров см. в разделе Обработка кадров мультимедиа с помощью MediaFrameReader.
Методы
Close() |
Удаляет объект и связанные с ним ресурсы. |
Dispose() |
Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов. |
TryGetFrameReferenceBySourceId(String) |
Пытается получить коррелированную со временем ссылку MediaFrameReference для указанного источника кадров мультимедиа. |