Поделиться через


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
Наследование
Object Platform::Object IInspectable MultiSourceMediaFrameReference
Атрибуты
Реализации

Требования к 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 для получения базовых данных. Эти способы включают перечисленные ниже.

Важно!

Если вы осуществляете доступ к объектам SoftwareBitmap или Direct3DSurface, предоставляемым свойством VideoMediaFrame класса MediaFrameReference, система создает строгую ссылку на эти объекты, что означает, что они не будут удален при вызове метода Dispose в содержащем классе MediaFrameReference. Необходимо явно вызвать метод Dispose класса SoftwareBitmap или Direct3DSurface непосредственно для объектов, чтобы немедленно удалить их. В противном случае сборщик мусора в конечном итоге освободит память для этих объектов, однако узнать, когда это произойдет, невозможно, и если количество выделенных растровых изображений или поверхностей превышает максимальное количество, разрешенное системой, поток новых кадров будет остановлен.

Инструкции по использованию MediaFrameSource для захвата кадров см. в разделе Обработка кадров мультимедиа с помощью MediaFrameReader.

Методы

Close()

Удаляет объект и связанные с ним ресурсы.

Dispose()

Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов.

TryGetFrameReferenceBySourceId(String)

Пытается получить коррелированную со временем ссылку MediaFrameReference для указанного источника кадров мультимедиа.

Применяется к

См. также раздел