MediaEncoder.AddFrame
Declaration
public bool AddFrame(Texture2D texture);public bool AddFrame(Texture2D texture, Media.MediaTime time);Параметры
| Параметр | Описание |
|---|---|
| текстура | Текстура, содержащая пиксели, которые будут записаны в дорожку для текущего кадра. |
| время | Метка времени для нового кадра. |
Возвращаемое значение
логическое True, если операция была успешной. False в противном случае.
Описание
Добавляет кадр к видеодорожке файла.
Например, в файле с видео 30FPS и аудио 48KHz, за каждым добавленным видео кадром должен следовать аудио буфер из 1600 кадров.
Примечание о штампах времени
При добавлении кадра, штамп времени, связанный с этим кадром, может быть дополнительно указан. Для того, чтобы использовать штамп времени, он должен быть действительным (см. MediaTime.IsValid).
Если штамп времени не предоставлен, кадр добавляется с использованием указанной частоты кадров видео (см. VideoTrackAttributes.frameRate) для вычисления разницы во времени между кадрами. Есть ситуации, когда штамп времени должен быть указан:
1. Когда видео трек создан без действительного штампа времени (см. VideoTrackAttributes.frameRate. В этом случае, все добавленные кадры должны иметь штамп времени, так как нет предопределенной разницы во времени между кадрами.
2. Когда разница во времени между последним кадром и добавленным кадром не соответствует ожиданиям. Например, когда запись в Unity и цикл игры длится дольше, чем ожидалось, разница во времени между кадрами больше не является постоянной. В этом случае вы должны указать метку времени, связанную с добавленным кадром. Таким образом, при воспроизведении записанного фильма, он будет соответствовать тому, что было видно во время записи. Полученный фильм будет иметь Variable Frame Rate (VFR), потому что разница во времени между каждым кадром не совпадает.
Для треков с предопределенной частотой, допустимо смешивать оба варианта, с и без метки времени, если значения времени в конечном итоге монотонна увеличиваются. Фрагменты, добавленные таким образом, не должны быть одинаково расположены во времени. Недопустимо добавлять кадр с меткой времени раньше, чем метка времени последнего кадра.
Declaration
public bool AddFrame(int width, int height, int rowBytes, TextureFormat format, NativeArray<byte> data);public bool AddFrame(int width, int height, int rowBytes, TextureFormat format, NativeArray<byte> data, Media.MediaTime time);Параметры
| Параметр | Описание |
|---|---|
| ширина | Ширина изображения. |
| высота | Высота изображения. |
| rowBytes | Байтов в одной строке пикселей. Полезно в случае, если строки содержат заполнение. Может быть установлено в 0, если заполнение отсутствует. |
| формат | Формат пикселей. В настоящее время поддерживается только TextureFormat.RGBA32. |
| данные | Байты, содержащие изображение. |
| время | Метка времени для нового кадра. |
Возвращаемое значение
логическое True, если операция была успешной. False в противном случае.
Описание
Добавляет кадр из необработанного буфера к видеодорожке файла.
Эта версия AddFrame помогает сохранить копирование изображения, если исходные данные не находятся в Texture2D. Например, когда пиксельные данные поступают из AsyncGPUReadbackRequest. Для более подробной информации, см. примечание об аудио/видео выравнивании в варианте MediaEncoder.AddFrame, принимающем Texture2D.
Для более подробной информации о параметре time см. Замечание о timestamps в других перегрузках этого метода.