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


MultiSourceMediaFrameReader.TryAcquireLatestFrame Метод

Определение

Пытается получить объект MultiSourceMediaFrameReference , который предоставляет доступ к последним коррелируемым по времени кадрам из одного или нескольких объектов MediaFrameSource .

public:
 virtual MultiSourceMediaFrameReference ^ TryAcquireLatestFrame() = TryAcquireLatestFrame;
MultiSourceMediaFrameReference TryAcquireLatestFrame();
public MultiSourceMediaFrameReference TryAcquireLatestFrame();
function tryAcquireLatestFrame()
Public Function TryAcquireLatestFrame () As MultiSourceMediaFrameReference

Возвращаемое значение

Объект MultiSourceMediaFrameReference, предоставляющий доступ к последним кадрам из источников кадров мультимедиа.

Комментарии

После получения экземпляра MultiSourceMediaFrameReference получите кадр мультимедиа, связанный со временем, из определенного источника кадров мультимедиа, вызвав MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId и передав значение свойства MediaFrameSourceInfo.Id для нужного источника кадра мультимедиа.

Каждый объект MultiSourceMediaFrameReader поддерживает циклический буфер объектов MediaFrameReference , полученных из TryAcquireLatestFrame. После использования всех объектов MediaFrameReference в буфере последующие вызовы TryAcquireLatestFrame приведут к тому, что система вызовет метод Close (или Dispose в C#) для самого старого объекта буфера, чтобы повторно использовать его. После удаления объекта вы больше не сможете использовать его для доступа к данным кадра. По этой причине не следует хранить объект MediaFrameReference дольше, чем требуется для обработки кадра. Если в сценарии приложения требуется дольше сохранять ссылку на данные, следует использовать один из предоставленных API для получения базовых данных. Эти способы включают перечисленные ниже.

Важно!

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

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

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