VideoStreamPlayback
Контракт реализации видеодекодера и передачи аудиокадров плееру.
Наследник реализует состояние Play/Stop/Paused, позицию и длину в секундах, _Update(delta), текущую текстуру и параметры аудио. Одного создания базового ресурса недостаточно для воспроизведения файла.
_Update получает продвижение времени, уже скорректированное плеером. MixAudio передаёт готовые interleaved float-сэмплы в подключённый приёмник; это не команда захвата микрофона и не декодирование готового видео средствами базового класса.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
VideoStreamPlaybackКонструктор
public VideoStreamPlayback();Создаёт базовый контейнер состояния декодера. Без переопределения контракта воспроизведения не декодирует файл.
Методы15
MixAudio2 перегрузки
public int MixAudio(int numFrames, ReadOnlySpan<float> buffer, int offset);Передаёт готовые float-сэмплы в подключённый приёмник плеера. numFrames — аудиокадры, buffer — interleaved каналы, offset — индекс float-сэмпла. Нужно достаточно данных для channels × numFrames после offset. Возвращает число принятых кадров, -1 при отсутствии приёмника/ошибке границ, 0 для numFrames <= 0. Не генерирует звук из пустого массива.
| Имя | Тип | По умолчанию |
|---|---|---|
numFrames | int | — |
buffer | ReadOnlySpan<float> | — |
offset | int | — |
numFramesЧисло аудиокадров, не отдельных сэмплов всех каналов.
bufferInterleaved float-сэмплы, достаточные для запрошенного числа кадров.
offsetНачальный индекс float-сэмпла в buffer.
intПередаёт готовые float-сэмплы в подключённый приёмник плеера. numFrames — аудиокадры, buffer — interleaved каналы, offset — индекс float-сэмпла. Нужно достаточно данных для channels × numFrames после offset. Возвращает число принятых кадров, -1 при отсутствии приёмника/ошибке границ, 0 для numFrames <= 0. Не генерирует звук из пустого массива.
public int MixAudio(int numFrames, float[] buffer = null, int offset = 0);Передаёт готовые float-сэмплы в подключённый приёмник плеера. numFrames — аудиокадры, buffer — interleaved каналы, offset — индекс float-сэмпла. Нужно достаточно данных для channels × numFrames после offset. Возвращает число принятых кадров, -1 при отсутствии приёмника/ошибке границ, 0 для numFrames <= 0. Не генерирует звук из пустого массива.
| Имя | Тип | По умолчанию |
|---|---|---|
numFrames | int | — |
buffer | float[] | null |
offset | int | 0 |
numFramesЧисло аудиокадров, не отдельных сэмплов всех каналов.
bufferInterleaved float-сэмплы, достаточные для запрошенного числа кадров.
offsetНачальный индекс float-сэмпла в buffer.
intПередаёт готовые float-сэмплы в подключённый приёмник плеера. numFrames — аудиокадры, buffer — interleaved каналы, offset — индекс float-сэмпла. Нужно достаточно данных для channels × numFrames после offset. Возвращает число принятых кадров, -1 при отсутствии приёмника/ошибке границ, 0 для numFrames <= 0. Не генерирует звук из пустого массива.
_GetChannelsint
public virtual int _GetChannels();Возвращайте фактическое число interleaved аудиоканалов; 0 — без аудио. Согласуйте с буфером MixAudio.
intВозвращайте фактическое число interleaved аудиоканалов; 0 — без аудио. Согласуйте с буфером MixAudio.
_GetLengthdouble
public virtual double _GetLength();Возвращайте длительность в секундах; 0 допустим при неизвестной длине. Не миллисекунды и не число кадров.
doubleВозвращайте длительность в секундах; 0 допустим при неизвестной длине. Не миллисекунды и не число кадров.
_GetMixRateint
public virtual int _GetMixRate();Возвращайте частоту декодированного аудио в Гц, например 48000. Не количество сэмплов текущего блока.
intВозвращайте частоту декодированного аудио в Гц, например 48000. Не количество сэмплов текущего блока.
_GetPlaybackPositiondouble
public virtual double _GetPlaybackPosition();Возвращайте текущую позицию в секундах с согласованной временной шкалой звука и изображения.
doubleВозвращайте текущую позицию в секундах с согласованной временной шкалой звука и изображения.
_GetTextureTexture2D
public virtual Texture2D _GetTexture();Возвращайте текущую Texture2D декодированного кадра. Стабильный обновляемый ресурс удобнее постоянного создания текстур; null означает отсутствие текстуры.
Texture2DВозвращайте текущую Texture2D декодированного кадра. Стабильный обновляемый ресурс удобнее постоянного создания текстур; null означает отсутствие текстуры.
_IsPausedbool
public virtual bool _IsPaused();Возвращайте сохранённую паузу собственной реализации.
boolВозвращайте сохранённую паузу собственной реализации.
_IsPlayingbool
public virtual bool _IsPlaying();Возвращайте фактическое состояние воспроизведения. После естественного конца установите false, чтобы VideoStreamPlayer обработал Loop/Finished. Не подменяйте паузу окончанием ролика.
boolВозвращайте фактическое состояние воспроизведения. После естественного конца установите false, чтобы VideoStreamPlayer обработал Loop/Finished. Не подменяйте паузу окончанием ролика.
_Playvoid
public virtual void _Play();Реализуйте запуск собственного playback. Решите и документируйте поведение повторного запуска; базовый C#-метод пуст.
_Seekvoid
public virtual void _Seek(double time);Реализуйте перемотку к time в секундах с проверкой диапазона и восстановлением состояния декодера. Базовый метод не умеет перематывать.
| Имя | Тип | По умолчанию |
|---|---|---|
time | double | — |
timeЦелевая позиция в секундах.
_SetAudioTrackvoid
public virtual void _SetAudioTrack(int idx);Обработайте индекс звуковой дорожки согласно своему формату. Не номер аудиошины и не количество каналов.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс звуковой дорожки.
_SetPausedvoid
public virtual void _SetPaused(bool paused);Сохраните состояние паузы и приостановите продвижение декодера без потери необходимого состояния.
| Имя | Тип | По умолчанию |
|---|---|---|
paused | bool | — |
pausedПриостановить продвижение без завершения потока.
_Stopvoid
public virtual void _Stop();Реализуйте остановку и очистку собственного декодера. Сброс позиции определяет ваша реализация, а не пустой базовый C#-метод.
_Updatevoid
public virtual void _Update(double delta);Продвиньте декодер на delta секунд и обновите кадр/аудиоданные. Плеер уже применяет масштаб времени: не умножайте его повторно без причины. Не используйте число вызовов как фиксированную частоту кадров.
| Имя | Тип | По умолчанию |
|---|---|---|
delta | double | — |
deltaПродвижение времени в секундах, уже масштабированное плеером.