reckfellENGINE

VideoStreamPlayback

Контракт реализации видеодекодера и передачи аудиокадров плееру.

На этой странице
class VideoStreamPlaybackReckfellSharpНаследует Resource

Наследник реализует состояние Play/Stop/Paused, позицию и длину в секундах, _Update(delta), текущую текстуру и параметры аудио. Одного создания базового ресурса недостаточно для воспроизведения файла.

_Update получает продвижение времени, уже скорректированное плеером. MixAudio передаёт готовые interleaved float-сэмплы в подключённый приёмник; это не команда захвата микрофона и не декодирование готового видео средствами базового класса.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

VideoStreamPlaybackКонструктор
# VideoStreamPlayback
C#
public VideoStreamPlayback();

Создаёт базовый контейнер состояния декодера. Без переопределения контракта воспроизведения не декодирует файл.

Методы15

MixAudio2 перегрузки
# MixAudio · 1/2
C#
public int MixAudio(int numFrames, ReadOnlySpan<float> buffer, int offset);

Передаёт готовые float-сэмплы в подключённый приёмник плеера. numFrames — аудиокадры, buffer — interleaved каналы, offset — индекс float-сэмпла. Нужно достаточно данных для channels × numFrames после offset. Возвращает число принятых кадров, -1 при отсутствии приёмника/ошибке границ, 0 для numFrames <= 0. Не генерирует звук из пустого массива.

Параметры
ИмяТипПо умолчанию
numFramesint—
bufferReadOnlySpan<float>—
offsetint—
numFrames

Число аудиокадров, не отдельных сэмплов всех каналов.

buffer

Interleaved float-сэмплы, достаточные для запрошенного числа кадров.

offset

Начальный индекс float-сэмпла в buffer.

Возвращает int

Передаёт готовые float-сэмплы в подключённый приёмник плеера. numFrames — аудиокадры, buffer — interleaved каналы, offset — индекс float-сэмпла. Нужно достаточно данных для channels × numFrames после offset. Возвращает число принятых кадров, -1 при отсутствии приёмника/ошибке границ, 0 для numFrames <= 0. Не генерирует звук из пустого массива.

# MixAudio · 2/2
C#
public int MixAudio(int numFrames, float[] buffer = null, int offset = 0);

Передаёт готовые float-сэмплы в подключённый приёмник плеера. numFrames — аудиокадры, buffer — interleaved каналы, offset — индекс float-сэмпла. Нужно достаточно данных для channels × numFrames после offset. Возвращает число принятых кадров, -1 при отсутствии приёмника/ошибке границ, 0 для numFrames <= 0. Не генерирует звук из пустого массива.

Параметры
ИмяТипПо умолчанию
numFramesint—
bufferfloat[]null
offsetint0
numFrames

Число аудиокадров, не отдельных сэмплов всех каналов.

buffer

Interleaved float-сэмплы, достаточные для запрошенного числа кадров.

offset

Начальный индекс float-сэмпла в buffer.

Возвращает int

Передаёт готовые float-сэмплы в подключённый приёмник плеера. numFrames — аудиокадры, buffer — interleaved каналы, offset — индекс float-сэмпла. Нужно достаточно данных для channels × numFrames после offset. Возвращает число принятых кадров, -1 при отсутствии приёмника/ошибке границ, 0 для numFrames <= 0. Не генерирует звук из пустого массива.

_GetChannelsint
# _GetChannels
C#
public virtual int _GetChannels();

Возвращайте фактическое число interleaved аудиоканалов; 0 — без аудио. Согласуйте с буфером MixAudio.

Возвращает int

Возвращайте фактическое число interleaved аудиоканалов; 0 — без аудио. Согласуйте с буфером MixAudio.

_GetLengthdouble
# _GetLength
C#
public virtual double _GetLength();

Возвращайте длительность в секундах; 0 допустим при неизвестной длине. Не миллисекунды и не число кадров.

Возвращает double

Возвращайте длительность в секундах; 0 допустим при неизвестной длине. Не миллисекунды и не число кадров.

_GetMixRateint
# _GetMixRate
C#
public virtual int _GetMixRate();

Возвращайте частоту декодированного аудио в Гц, например 48000. Не количество сэмплов текущего блока.

Возвращает int

Возвращайте частоту декодированного аудио в Гц, например 48000. Не количество сэмплов текущего блока.

_GetPlaybackPositiondouble
# _GetPlaybackPosition
C#
public virtual double _GetPlaybackPosition();

Возвращайте текущую позицию в секундах с согласованной временной шкалой звука и изображения.

Возвращает double

Возвращайте текущую позицию в секундах с согласованной временной шкалой звука и изображения.

_GetTextureTexture2D
# _GetTexture
C#
public virtual Texture2D _GetTexture();

Возвращайте текущую Texture2D декодированного кадра. Стабильный обновляемый ресурс удобнее постоянного создания текстур; null означает отсутствие текстуры.

Возвращает Texture2D

Возвращайте текущую Texture2D декодированного кадра. Стабильный обновляемый ресурс удобнее постоянного создания текстур; null означает отсутствие текстуры.

_IsPausedbool
# _IsPaused
C#
public virtual bool _IsPaused();

Возвращайте сохранённую паузу собственной реализации.

Возвращает bool

Возвращайте сохранённую паузу собственной реализации.

_IsPlayingbool
# _IsPlaying
C#
public virtual bool _IsPlaying();

Возвращайте фактическое состояние воспроизведения. После естественного конца установите false, чтобы VideoStreamPlayer обработал Loop/Finished. Не подменяйте паузу окончанием ролика.

Возвращает bool

Возвращайте фактическое состояние воспроизведения. После естественного конца установите false, чтобы VideoStreamPlayer обработал Loop/Finished. Не подменяйте паузу окончанием ролика.

_Playvoid
# _Play
C#
public virtual void _Play();

Реализуйте запуск собственного playback. Решите и документируйте поведение повторного запуска; базовый C#-метод пуст.

_Seekvoid
# _Seek
C#
public virtual void _Seek(double time);

Реализуйте перемотку к time в секундах с проверкой диапазона и восстановлением состояния декодера. Базовый метод не умеет перематывать.

Параметры
ИмяТипПо умолчанию
timedouble—
time

Целевая позиция в секундах.

_SetAudioTrackvoid
# _SetAudioTrack
C#
public virtual void _SetAudioTrack(int idx);

Обработайте индекс звуковой дорожки согласно своему формату. Не номер аудиошины и не количество каналов.

Параметры
ИмяТипПо умолчанию
idxint—
idx

Индекс звуковой дорожки.

_SetPausedvoid
# _SetPaused
C#
public virtual void _SetPaused(bool paused);

Сохраните состояние паузы и приостановите продвижение декодера без потери необходимого состояния.

Параметры
ИмяТипПо умолчанию
pausedbool—
paused

Приостановить продвижение без завершения потока.

_Stopvoid
# _Stop
C#
public virtual void _Stop();

Реализуйте остановку и очистку собственного декодера. Сброс позиции определяет ваша реализация, а не пустой базовый C#-метод.

_Updatevoid
# _Update
C#
public virtual void _Update(double delta);

Продвиньте декодер на delta секунд и обновите кадр/аудиоданные. Плеер уже применяет масштаб времени: не умножайте его повторно без причины. Не используйте число вызовов как фиксированную частоту кадров.

Параметры
ИмяТипПо умолчанию
deltadouble—
delta

Продвижение времени в секундах, уже масштабированное плеером.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.