2017-06-19 2 views
1

je le code html suivant:poignée flux nul dans la balise vidéo

<video width="426" height="240" controls="" preload="auto" autoplay=""> 
    <source src="http://localhost:8081/VideoStream"> 
    Your browser does not support HTML5 video 
</video> 

Dans la partie serveur C# i ai le code suivant:

public Stream VideoStream() 
{ 
    try 
    { 
     return File.OpenRead(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "video.ogg")); 
    }catch(Exception) 
    { 
    return Stream.Null; 
    } 
} 

Le code fonctionne, mais je voudrais de savoir en quelque sorte en html que j'ai reçu ce Stream.Null afin que je puisse afficher un message d'erreur au lieu d'un lecteur vidéo qui ne rend rien.

Pouvez-vous me donner quelques conseils comment puis-je y parvenir?

+0

Je voudrais savoir en html que j'ai reçu un flux nul. – Lucian

Répondre

0

Comme Stream.Null retourne juste un nouveau NullStream qui est un flux valide avec la longueur de 0 bits que vous pouvez seulement vérifier si le flux est vide.

En javascript, vous pouvez vérifier si la valeur duration du tag vidéo est égale à 0. Vous pouvez le faire dans l'événement loadedmetadata.

<script> 
    var video = $('<video width="426" height="240" controls="" preload="auto" autoplay="">' + 
         '<source src="http://localhost:8081/VideoStream">' + 
         'Your browser does not support HTML5 video' + 
        '</video>'); 

    video.on('loadedmetadata', function(evt) { 
     if(evt.target.duration === 0) { 
      console.log("The video is empty"); 
     } else { 
      console.log("The video has content"); 
     } 
    }); 
    video.on('error', function(evt) { 
     console.log("The video cannot be played"); 
    }); 

    $(document.body).append(video); 
</script> 

L'événement loadedmetadata se produit lorsque des métadonnées pour la vidéo spécifiée a été chargée. Les métadonnées pour la vidéo comprennent: la durée, les dimensions et les pistes de texte.

+0

Pour une raison quelconque, l'événement ne se déclenchera pas. mon élément vidéo est ajouté de manière dinamique, donc j'ai utilisé le code suivant: $ (document) .on ('loadedmetadata', 'video', function (evt) – Lucian

+0

@Lucian Cela ne fonctionnera pas. événement sur le 'document' .Vous devez le faire comme je l'ai décrit dans la réponse.Egalement si vous ajoutez dynamiquement votre vidéo – NtFreX

+0

même.n'en tirera pas.Si je change loadedmetadata avec un clic il va fonctionner – Lucian