Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
1

Поздно воспроизводится видео

11.01.2019, 21:50. Показов 3332. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, в общем, при запуске сцены я воспроизвожу видео по ссылке в video player, на компютере все норм, но на телефоне оно немного долго загружаеться (что не странно), но не будет же это время просто черная картинка вместо видео, и я сделал следующее:

C#
1
2
3
4
5
6
7
    private IEnumerator WaitForPlay()
    {
        while (!videoPlayer.isPlaying)
            yield return 0;
 
        videoPanel.gameObject.SetActive(true);
    }
т.е. в начале прописываю videoPlayer.Play(), и сразу же запускаю корутину, но эта панель активируеться и еще несколько секунд черный екран, и только потом видео воспроизводиться.

Вот код который выполняеться при старте:
C#
1
2
3
4
videoPlayer.url = VideoUrl;
videoPlayer.Prepare();
videoPlayer.Play();
StartCoroutine(WaitForPlay());
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2019, 21:50
Ответы с готовыми решениями:

Не воспроизводится видео
Стоит Хрюшка (XP Prof. SP3 32-bit), пользуюсь двумя проигрывателями: windows media player и MPC-HC...

Не воспроизводится видео
Не воспроизводится видео звука нет тоже, в плеере MPC-HC стоит на стопе всегда Кодеки свежие,...

Не воспроизводится видео.
Уже второй раз переставляю винду и такая фигня типа не идут видео файлы. хоть когда я переставлял...

Не воспроизводится видео
Здравствуйте! Подскажите, пожалуйста, как решить следующие вопросы: 1. не воспроизводится...

9
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
11.01.2019, 21:58 2
Попробуй https://docs.unity3d.com/Scrip... pared.html вместо isPlaying.
0
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
11.01.2019, 22:07  [ТС] 3
1max1, то же самое, один в один занимает времени.

Добавлено через 3 минуты
1max1, может это решения, но я не понимаю как ним пользоваться, += и функцию к нему не применить https://docs.unity3d.com/Scrip... leted.html
0
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
11.01.2019, 22:10 4
Метод должен иметь такую сигнатуру:
C#
1
void Complete(VideoPlayer source) { }
0
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
11.01.2019, 22:14  [ТС] 5
1max1, нет, все та же проблема.
0
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
24.01.2019, 15:15  [ТС] 6
UP!
0
Эксперт .NETАвтор FAQ
10410 / 5140 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
24.01.2019, 16:40 7
k0vpack, Выложите пример с конкретным видео, где можно увидеть вашу проблему.
А также сформулируйте чего вы хотите добиться.
0
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
24.01.2019, 18:32  [ТС] 8
Storm23, вот видео: суть его такая, загружаю виде по ссылке с интернета (гугловские сервера), и воспроизвожу, на компютере все норм, на телефоне же идет заддержка с черным экраном, при том в коде прописано что появляться видео плеер должен тогда когда видео уже воспроизводиться:
C#
1
2
        videoPlayer.Play();
        videoPanel.gameObject.SetActive(true);


Проект вот - https://dropmefiles.com/NHAMs , не могу на форум закинуть.
0
Эксперт .NETАвтор FAQ
10410 / 5140 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
24.01.2019, 23:54 9
Лучший ответ Сообщение было отмечено k0vpack как решение

Решение

k0vpack,
Причина черного экрана в том, что пока панель в которой вы показываете видео - скрыта, то видео и не начинает реально воспроизводится. Оно начинает проигрываться только после того как вы начинаете отображать панель. Но начать сразу оно не может, поэтому некоторое время виден черный экран.

Как этого избежать?
Не нужно скрывать панель, пусть она будет видна. Но для нее можно выставить Scale в 0. Тогда она формально будет видна, но ее размер будет 0.
Далее, для того, что бы точно установить факт начала проигрывания - нужно обрабатывать событие frameReady. И в этом событии нужно установить нормальный Scale = 1 для панели.
Но есть один момент, событие frameReady просто так не срабатывает. Для того, что бы оно срабатывало, нужно установить свойство VideoPlayer.sendFrameReadyEvents в true.

И вот тогда все заработает как надо:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
 
public class LoadGameVideoPlayer : MonoBehaviour
{
    [SerializeField]
    private Image videoPanel;
    public VideoPlayer videoPlayer;
    [SerializeField]
    private RawImage videoImage;
    public bool VideoIsClosed;
 
    //private string urlVideo = "https://r14---sn-3c27sn7z.googlevideo.com/videoplayback?ipbits=0&sparams=aitags,clen,dur,ei,expire,gir,id,ip,ipbits,ipbypass,itag,keepalive,lmt,mime,mip,mm,mn,ms,mv,nh,pl,requiressl,source&lmt=1536931347769396&gir=yes&ei=UshJXP6hD5boj-8Pg_WswAI&source=youtube&pl=23&requiressl=yes&ip=190.214.56.238&mime=video%2Fmp4&expire=1548360882&itag=136&id=o-ANYktvm1Q-Mlr2Tc25diNagzUjRx5re7Kyw1u8uZ8Hmd&keepalive=yes&key=cms1&c=WEB&clen=50446177&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398&dur=252.168&fvip=3&signature=7E0A83AFD344144B72F8D10FCD65059175B379D2.3DAC67E2ED0100D224AEE13A9AF447C7CE52548C&video_id=9bZkp7q19f0&title=PSY+-+GANGNAM+STYLE%28%EA%B0%95%EB%82%A8%EC%8A%A4%ED%83%80%EC%9D%BC%29+M-V&rm=sn-jou-btxl7d,sn-ab5yd7s&req_id=7534de356541a3ee&redirect_counter=2&cms_redirect=yes&ipbypass=yes&mip=31.148.135.167&mm=30&mn=sn-3c27sn7z&ms=nxu&mt=1548340910&mv=m&nh=IgpwcjAxLmticDAxKgkxMjcuMC4wLjE";
    private string urlVideo = "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_5mb.mp4";
 
    void Awake()
    {
        StartCoroutine(GetUlrs());
    }
 
    private IEnumerator GetUlrs()
    {
        yield return null;
 
        //hide panel
        videoPanel.transform.localScale = new Vector3(0f, 0f, 0f);
 
        //
        videoPlayer.url = urlVideo;
        videoPlayer.prepareCompleted += WaitForPlayNoIE;
        videoPlayer.sendFrameReadyEvents = true;//enable to fire frameReady event
        videoPlayer.frameReady += FrameReadyHandle;
        videoPlayer.Prepare();
    }
 
 
    private void FrameReadyHandle(VideoPlayer source, long frameidx)
    {
        //show panel
        videoPanel.transform.localScale = new Vector3(1, 1, 1);
    }
 
    public void CloseVideo()
    {
        videoPlayer.Stop();
        videoPanel.gameObject.SetActive(false);
        //hide panel
        videoPanel.transform.localScale = new Vector3(0f, 0f, 0f);
    }
 
    private void WaitForPlayNoIE(VideoPlayer video)
    {
        //start playing
        videoPlayer.Play();
        videoPanel.gameObject.SetActive(true);
    }
}
1
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
25.01.2019, 00:28  [ТС] 10
Storm23, спасибо, уже думал не решаеться
0
25.01.2019, 00:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2019, 00:28
Помогаю со студенческими работами здесь

Видео не воспроизводится в IE
Не воспроизводится видео в IE. <video width="500" height="325" controls="controls"> ...

Не воспроизводится видео
Проблема такая. Есть форма, в которой должно воспроизводится видео. Подключен СОМ-компонент Windows...

Не воспроизводится видео
При попытке возпроизвести видео проигрыватель Windows Media выдайот ошибку второй проигрывает со...

не воспроизводится видео!
Скачал уроки Программирование на С# с использованием Microsoft .NET Framework 4 а они звук...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru