IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unity Discussion :

soucis avec script VideoPlayer


Sujet :

Unity

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 204
    Points : 29
    Points
    29
    Par défaut soucis avec script VideoPlayer
    salut tout le monde

    voila

    j'ai créé un script C# le voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    public VideoPlayer compenentVideo ; 
    	public VideoClip [] video ;
     
    	// Use this for initialization
    	void Awake(){
     
    		compenentVideo = GetComponent<VideoPlayer>();
     
     
    	}
     
    	void Start () {
     
    		StartCoroutine (MenuVideo());
     
    		}
     
    	IEnumerator MenuVideo(){
     
    		compenentVideo.clip = video [0];
    		yield return new WaitForSeconds(10);
    		compenentVideo.clip = video [1];
    		yield return new WaitForSeconds(7);
    		compenentVideo.clip = video [2];
     
    	}
    le but de ce script et de pouvoir lire 3 = Vidéo une après l"autre en fonction d'une simple coroutine


    le script fait son boulot et lie ces vidéo mais j'ai un petit souci quand la première vidéo et la deuxième vidéo se fini pour passer a la vidéo suivante il y a ca qui perturbe la vision graphique entre chaque lecture de chaque nouvelle vidéo

    Nom : Unity Baground Video.PNG
Affichages : 275
Taille : 45,5 Ko


    est ce qu'il existe une ligne de code a ajouter dans mon script pour éviter ce décalage graphique ?

    j'ai déjà essayer de diminuer et augmenter les valeur de mes ligne de coroutine mais ca reste la même chose


    et merci d'avance

  2. #2
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Salut,

    Je n'ai pas trop utilisé les vidéos mais je pense que c'est tout simplement qu'entre 2 vidéos et entre 2 appels de ta coroutine il y aucune vidéo de charger ou en attente du coup cela affiche de base l'arrière plan de ta scène ce qui cause ce bug.

    Tu as parcourus la doc ? https://docs.unity3d.com/ScriptRefer...deoPlayer.html
    Il y a des trucs du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // VideoPlayer automatically targets the camera backplane when it is added
            // to a camera object, no need to change videoPlayer.targetCamera.
            var videoPlayer = camera.AddComponent<UnityEngine.Video.VideoPlayer>();
     
            // By default, VideoPlayers added to a camera will use the far plane.
            // Let's target the near plane instead.
            videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;
     
            // This will cause our scene to be visible through the video being played.
            videoPlayer.targetCameraAlpha = 0.5F;
    Il doit y avoir moyen de dire quelque part ou par code "quand tu n'as pas de vidéo en cours tu m'affiches cette image ou un écran noir"

    Par exemple en rajoutant un autre script pour ton player avec les Events du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    loopPointReached	Invoked when the VideoPlayer reaches the end of the content to play.
    Soit quand tu as ça tu lui indique de cacher ton player, de lui changer son randermode ou autre vu au dessus pour qu'entre deux vidéo tu affiches ce que tu veux ou pourquoi pas carrément tester un script qui remplace ton yield return du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    (je fais en grande ligne, pas du tout écrit comme il faut)
    public COMPTEUR_VIDEO integer = 1;
     
    Void start {
      LIRE_VIDEO( COMPTEUR)
    }
     
     
     
    On events loopPointReached {
    COMPTEUR_VIDEO += 1;
    Si COMPTEUR_VIDEO  < 3
    {
     LIRE_VIDEO( COMPTEUR);   
    }
    sinon
    {
        Detruire/cacher le lecteur;
    }
     
    }
    Reste à voir si cela évite la saccade entre deux vidéos d'utiliser les Events ou si cela revient exactement au même que ta coroutine, je ne sais pas du tout ^^

    TontonNico
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 204
    Points : 29
    Points
    29
    Par défaut
    je te remercie beaucoup pour ton aide

    j'ai essayer ces ligne dans un autre script de ma camera cible de dans la fonction "Start"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // VideoPlayer automatically targets the camera backplane when it is added
            // to a camera object, no need to change videoPlayer.targetCamera.
            var videoPlayer = camera.AddComponent<UnityEngine.Video.VideoPlayer>();
     
            // By default, VideoPlayers added to a camera will use the far plane.
            // Let's target the near plane instead.
            videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;
     
            // This will cause our scene to be visible through the video being played.
            videoPlayer.targetCameraAlpha = 0.5F;
    et j'ai ajouter aussi cette ligne de la documentation pour ne pas avoirs d’erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GameObject camera = GameObject.Find("Main Camera");
    mai rien ne change

    pour ce qui est Events cette notion je la connais pas

    est ce que tu peut me donner un exemple de construction syntaxic d'Events pour cette exemple ???

    et ce qu'il a un espoir dans ce cas ?

    et merci d'avance

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Pourquoi utiliser une coroutine pour ça ?
    Il y a une doc qui explique (à peu près) tout ce qu'il faut savoir pour manipuler un VideoPlayer
    https://docs.unity3d.com/ScriptRefer...deoPlayer.html
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Pourquoi utiliser une coroutine pour ça ?
    Les choses les plus évidentes sont parfois les plus durs à voir: Tout simplement parce que c'est l'idée/la solution technique qu'il a eu en premier lieu pour répondre à son besoin et donc il est venu en parler ici avec nous


    Citation Envoyé par Bousk Voir le message
    Il y a une doc qui explique (à peu près) tout ce qu'il faut savoir pour manipuler un VideoPlayer
    https://docs.unity3d.com/ScriptRefer...deoPlayer.html
    A quoi cela sert de redonner un lien déjà donné juste avant sauf rien de plus?
    On est habitué à mieux de ta part Bousk !


    @lyokoguerier
    Au final Bousk le dit maladroitement mais il ne faut pas essayer que les 3 lignes de commandes que je t'ai donné, c'était juste un extrait de la documentation en effet.
    Regarde un peu tout et essaye plein de chose.

    Le cas échéant pour bien faire, condense ton code (surtout vu que tu as la référence de la doc pour tester plein de truc maintenant, pour le premier message normal de rien avoir à montrer des fois on va dire) pour garder ce qui est le plus utile pour la question en cours et balance nous tes lignes de codes ici
    Déjà cela donnera de la matière pour t'aider/ te faire des critiques constructives/te corriger/t'aider pour les personnes avec de l'expérience (personnellement je serais content de voir le code final si tu trouves comment bien faire héhé)


    TontonNico
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 204
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Tonton Nico Voir le message

    @lyokoguerier
    Au final Bousk le dit maladroitement mais il ne faut pas essayer que les 3 lignes de commandes que je t'ai donné, c'était juste un extrait de la documentation en effet.
    Regarde un peu tout et essaye plein de chose.

    Le cas échéant pour bien faire, condense ton code (surtout vu que tu as la référence de la doc pour tester plein de truc maintenant, pour le premier message normal de rien avoir à montrer des fois on va dire) pour garder ce qui est le plus utile pour la question en cours et balance nous tes lignes de codes ici
    Déjà cela donnera de la matière pour t'aider/ te faire des critiques constructives/te corriger/t'aider pour les personnes avec de l'expérience (personnellement je serais content de voir le code final si tu trouves comment bien faire héhé)

    TontonNico
    ok je balancerais mes code et j’espère que tu pourrais m'aidez

    1- j'ai essayer d'utiliser les boucle voici ce que ca ressemble

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    public class CoroutineCanvasDisplay : MonoBehaviour {
     
    public VideoPlayer compenentVideo ; 
    	public VideoClip [] video ;
    	public int COMPTEUR_VIDEO = 0;
     
    	// Use this for initialization
    	void Awake(){
     
     
    		compenentVideo = GetComponent<VideoPlayer>();
     
     
     
    	}
     
    	void Start () {
     
    		while(COMPTEUR_VIDEO<3) {
    			compenentVideo.clip = video [0];
    			COMPTEUR_VIDEO++;
    			compenentVideo.clip = video [1];
    			COMPTEUR_VIDEO++;
    			compenentVideo.clip = video [2];
     
    		}
     
    	}
     
    	}
    Nom : inspecteur boucle.PNG
Affichages : 244
Taille : 38,1 Ko

    j'ai remarquer que la dernière vidéo qui se lance toute seul



    2- j'ai essayer d'utiliser aussi les condtition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    
    
    public class CoroutineCanvasDisplay : MonoBehaviour {
    
    	public VideoPlayer compenentVideo ; 
    	public VideoClip [] video ;
    	public int COMPTEUR_VIDEO = 0;
    
    	// Use this for initialization
    	void Awake(){
    
    
    		compenentVideo = GetComponent<VideoPlayer>();
    
    	}
    
    	void Start () {
    
    
    		if (COMPTEUR_VIDEO == 0) {
    
    			compenentVideo.clip = video [0];
    			COMPTEUR_VIDEO++;
    		}else  if (COMPTEUR_VIDEO ==1) {
    
    			compenentVideo.clip = video [1];
    			COMPTEUR_VIDEO++;
    		}
    		else if (COMPTEUR_VIDEO ==2) {
    
    			compenentVideo.clip = video [2];
    			COMPTEUR_VIDEO++;
    		}
    
    		}
    
    
    
    	// Update is called once per frame
    	void Update () {
    
    
    		}
    
    
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    12345
     
     
    [ATTACH=CONFIG]428680[/ATTACH]
     
    la première vidéo est lus après écran noir ca vaut le aussi pour ceci :
    public class CoroutineCanvasDisplay : MonoBehaviour { public VideoPlayer compenentVideo ; public VideoClip [] video ; public int COMPTEUR_VIDEO = 0; // Use this for initialization void Awake(){ compenentVideo = GetComponent<VideoPlayer>(); } void Start () { StartCoroutine (MenuVideo()); } IEnumerator MenuVideo(){ if (COMPTEUR_VIDEO == 0) { compenentVideo.clip = video [0]; yield return new WaitForSeconds(10); COMPTEUR_VIDEO++; }else if (COMPTEUR_VIDEO ==1) { compenentVideo.clip = video [1]; yield return new WaitForSeconds(7); COMPTEUR_VIDEO++; } else if (COMPTEUR_VIDEO ==2) { compenentVideo.clip = video [2]; COMPTEUR_VIDEO++; } }
    les coroutine est les condition mélanger

    3-voici les boucle et les coroutine mélanger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public class CoroutineCanvasDisplay : MonoBehaviour {
     
    	public VideoPlayer compenentVideo ; 
    	public VideoClip [] video ;
    	public int COMPTEUR_VIDEO = 0;
     
    	// Use this for initialization
    	void Awake(){
     
     
    		compenentVideo = GetComponent<VideoPlayer>();
     
    	}
     
    	void Start () {
     
    		StartCoroutine(MenuVideo());
     
    		}
    	IEnumerator MenuVideo(){
     
    		while(COMPTEUR_VIDEO<3) {
    			compenentVideo.clip = video [0];
    			yield return new WaitForSeconds(10);
    			COMPTEUR_VIDEO++;
    			compenentVideo.clip = video [1];
    			yield return new WaitForSeconds(7);
    			COMPTEUR_VIDEO++;
    			compenentVideo.clip = video [2];
    			COMPTEUR_VIDEO++;
     
     
     
    		}
     
    	}
     
     
     
    	// Update is called once per frame
    	void Update () {
     
     
    		}
     
     
    }
    les vidéo sont lus mais avec le décalage donc je tourne sur le mème rond

    voici le script que j'ai utiliser dans dernier post ajouter a la camera que j'ai cibler a mon canvas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class debugdisplaycamera : MonoBehaviour {
     
    // Use this for initialization
    	void Start () {
     
    		GameObject camera = GameObject.Find ("Main Camera published by Square Europe , Ltd");
    		var videoPlayer = camera.AddComponent<UnityEngine.Video.VideoPlayer>();
    		videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;
    		videoPlayer.targetCameraAlpha = 0.5F;
    	}
     
    	// Update is called once per frame
    	void Update () {
     
    	}
    }
    et voici le dernier script que j'ai associer dans camera pour tester dans tout les cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public class CoroutineCanvasDisplay : MonoBehaviour {
     
    	public VideoPlayer compenentVideo ; 
    	public VideoClip [] video ;
    	public int COMPTEUR_VIDEO = 0;
     
    	// Use this for initialization
    	void Awake(){
     
     
    		compenentVideo = GetComponent<VideoPlayer>();
    		GameObject camera = GameObject.Find ("Main Camera published by Square Europe , Ltd");
    		var videoPlayer = camera.AddComponent<UnityEngine.Video.VideoPlayer>();
    		videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;
    		videoPlayer.targetCameraAlpha = 0.5F;
     
    	}
     
    	void Start () {
     
    		StartCoroutine(MenuVideo());
     
    		}
    	IEnumerator MenuVideo(){
     
    		while(COMPTEUR_VIDEO<3) {
    			compenentVideo.clip = video [0];
    			yield return new WaitForSeconds(10);
    			COMPTEUR_VIDEO++;
    			compenentVideo.clip = video [1];
    			yield return new WaitForSeconds(7);
    			COMPTEUR_VIDEO++;
    			compenentVideo.clip = video [2];
    			COMPTEUR_VIDEO++;
     
     
     
    		}
     
    	}
     
     
     
    	// Update is called once per frame
    	void Update () {
     
     
    		}
     
     
    }
    Nom : Script sur la camera.PNG
Affichages : 245
Taille : 38,9 Ko

    mais toujours le mème souci et j'ai essayer les ligne comme ceci mais monodevlope ne comparant pas la syntax comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;
    compenentVideo.clip = video [0];
    yield return new WaitForSeconds(10);
    compenentVideo.clip = video [1];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    video = videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;
    compenentVideo.clip = video [0];
    yield return new WaitForSeconds(10);
    compenentVideo.clip = video [1];

    j'essaye d'apprendre a coder

    est ce qu'i y a une solution a ce problème ?


    et merci d'avance

Discussions similaires

  1. souci avec script php moteur interne
    Par snip74 dans le forum Langage
    Réponses: 1
    Dernier message: 24/06/2011, 08h18
  2. Petit soucie avec script de récup d'info
    Par kimous dans le forum Web
    Réponses: 4
    Dernier message: 11/03/2008, 14h11
  3. soucis avec mon script de news
    Par Ludo75 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/01/2007, 14h41
  4. Petit souci avec un script
    Par Equinoxe5 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/09/2006, 15h43
  5. [Upload] Souci avec un script d'upload
    Par Ludo75 dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2006, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo