VideoPlayer получить текущий кадр

Общие вопросы о Unity3D

VideoPlayer получить текущий кадр

Сообщение LemanRass 25 апр 2017, 14:06

Здравствуйте.
Стоит задача по мере воспроизведения видео получать каждый кадр в виде byte[] buffer.
Для упрощения я решил для начала научиться хотя бы получать каждый кадр в виде Texture2D но столкнувшись с трудностями конвертации Texture в Texture2D (var texture = frame as Texture2D; не работает. Судя по всему там есть нюансы но с ними разберусь потом) в итоге решил получать кадр хотя бы в виде Texture.
Так вот, мне нужен конкретный кадр во время нажатия к примеру кнопки на клавиатуре в отдельном окошке.
Для себя я выбрал RawImage из UI для отображения последнего сохраненного кадра. Вот так в итоге выглядит сцена:
Скрытый текст:
Изображение


Пробовал реализовать задачу так:
Скрытый текст:
Изображение


И так:
Скрытый текст:
Изображение


И даже так:
Скрытый текст:
Изображение
\

Все чего я смог добиться это либо оно вообще не работает, либо при единичном нажатии оно воспроизводит все кадры из ролика вместо сохранения конкрентного.
Разработчик SpaceBall
Скрытый текст:
LemanRass
UNIверсал
 
Сообщения: 385
Зарегистрирован: 23 фев 2014, 12:00
Skype: coder.dev

Re: VideoPlayer получить текущий кадр

Сообщение DbIMok 25 апр 2017, 14:16

VideoPlayer.renderMode установлен в Video.VideoTarget.APIOnly?
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.6k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: VideoPlayer получить текущий кадр

Сообщение LemanRass 25 апр 2017, 14:48

Нет. Но и с ним не работает. Более того, с ним даже видео в основном окне не работает. Вернее работает только звук без картинки.
Разработчик SpaceBall
Скрытый текст:
LemanRass
UNIверсал
 
Сообщения: 385
Зарегистрирован: 23 фев 2014, 12:00
Skype: coder.dev

Re: VideoPlayer получить текущий кадр

Сообщение DbIMok 25 апр 2017, 15:33

LemanRass писал(а):без картинки

судя по справке так и должно быть. вот примерчик https://goo.gl/WTmrc6
Синтаксис:
Используется csharp
        private string url = @"https://upload.wikimedia.org/wikipedia/commons/transcoded/c/c5/I-15bis.ogv/I-15bis.ogv.240p.webm";
        private VideoPlayer vp;
        public RenderTexture rt;

        void Start () {
                vp = gameObject.AddComponent<VideoPlayer>();
                vp.renderMode = VideoRenderMode.RenderTexture;
                vp.targetTexture = rt;
                vp.url = url;
                vp.Play();
        }
       
        void Update () {
                if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.S)) {
                        SaveToJPG();
                }
        }

        void SaveToJPG() {
                RenderTexture currentActiveRT = RenderTexture.active;
                RenderTexture.active = rt;
                Texture2D tex = new Texture2D(rt.width, rt.height);
                tex.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);
                RenderTexture.active = currentActiveRT;
                byte[] bytes = tex.EncodeToJPG();
                File.WriteAllBytes(string.Format("{0}/test.jpg", Application.dataPath.Replace("/Assets", "/")), bytes);
        }
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.6k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: VideoPlayer получить текущий кадр

Сообщение LemanRass 26 апр 2017, 13:01

Большое спасибо.

Пришлось немного по потеть. Не понимал почему на диск нормально сохраняет а в RawImage вставляет только серый полупрозрачный фон.
Вспомнил что после манипуляций с пикселями текстур следует вызывать Apply() метод и теперь все ок.
Разработчик SpaceBall
Скрытый текст:
LemanRass
UNIверсал
 
Сообщения: 385
Зарегистрирован: 23 фев 2014, 12:00
Skype: coder.dev


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10