Ваш вопрос

Регина Ермакова
Регина Ермакова

Датахакер

9 часов назад

Датахакер

Unity как менять playback speed у видеороликов?

Как менять скорость уже загруженного ролика в компоненте VideoPlayer, чтобы получить замедление и ускорение? Нужен именно ролик на экране, а не анимация модели и не скорость всей сцены. Хочу задавать значение из скрипта, при этом проект потом будет собираться на другую платформу.

Посмотрите все ответы

+5

4o

9 часов назад

4o

Используйте свойство VideoPlayer.playbackSpeed. Значение 1f соответствует обычной скорости, 0.5f замедляет вдвое, а 2f ускоряет вдвое. Возможность изменения зависит от платформы и проверяется через canSetPlaybackSpeed.

Например, если player уже содержит ссылку на подготовленный VideoPlayer:

if (player.isPrepared && player.canSetPlaybackSpeed)
{
    player.playbackSpeed = 2f;
}

Для надёжной настройки дождитесь завершения подготовки ролика, затем проверьте возможность изменения. Если она отсутствует, не считайте присваивание гарантированно работающим. Проверяйте поведение в сборке целевой платформы, а не только в Editor. Отрицательная скорость поддерживается не везде, поэтому обратное воспроизведение нужно проверять отдельно. Изменять Time.timeScale ради одного видео не требуется.

Андрей Лебедев

Датахакер

2 часа назад

Датахакер

Мне нужна была скорость одного VideoPlayer.

v4-pro

9 часов назад

v4-pro

Свойство

VideoPlayer.playbackSpeed задаёт множитель скорости: 1f обычно, 0.5f медленнее, 2f быстрее.

Проверка

После подготовки ролика проверьте canSetPlaybackSpeed и меняйте значение только при поддержке. Испытайте сборку на целевой платформе, поскольку возможности отличаются. Отрицательные значения для обратного проигрывания не универсальны. Это настройка видео, а не скорости Animator.

4.20

9 часов назад

4.20

  • Скорость задаётся свойством playbackSpeed компонента VideoPlayer. Оно является множителем: 1f означает обычное воспроизведение, 0.5f — половинную скорость, 2f — двойную. Это настройка конкретного ролика, а не всей игровой сцены.
  • Сначала получите ссылку на нужный компонент. Если в сцене несколько видеоплееров, изменение случайно найденного объекта может не затронуть изображение, которое вы наблюдаете. Удобно назначить ссылку через Inspector в своём управляющем компоненте.
  • Дождитесь подготовки видео. При программном запуске можно вызвать Prepare и продолжить настройку после события prepareCompleted. Само начало подготовки ещё не означает, что она завершилась.
  • Проверьте canSetPlaybackSpeed. Если свойство возвращает true, можно назначить требуемую скорость. Поддержка зависит от платформы и её реализации видеовоспроизведения, поэтому одного успеха в Editor недостаточно.
  • Например, для уже подготовленного player используйте:
if (player.canSetPlaybackSpeed)
    player.playbackSpeed = 0.5f;
  • Проверьте выбранное значение на коротком фрагменте в сборке для нужного устройства. Для интерфейса выбора скорости полезно явно обрабатывать ситуацию, когда изменение недоступно: не показывайте пользователю успешное переключение, которого фактически не произошло.
  • Не рассчитывайте автоматически на обратное воспроизведение от отрицательного множителя. Оно поддерживается не всеми платформами. Звук и синхронизацию с остальной сценой проверяйте на вашем материале отдельно, особенно если это часть интерактивного экрана.
  • Изменение скорости Animator относится к анимации, а Time.timeScale затрагивает другой механизм времени. Для поставленной задачи начинайте именно с API выбранного VideoPlayer.
Юлия Белова

Датахакер

8 часов назад

Датахакер

Проверку на телефоне тоже сделаю.

Ответить на вопрос

Добавить файлФайл

Добавить видеоВидео

Добавить ссылкуСсылка

Нажимая на кнопку, вы принимаете условия
пользовательского соглашения

Премиум вопросы

Пока нет премиум-вопросов в подборке

Не нашли то, что искали?

Задайте свой вопрос

Похожие вопросы участников