处理视频标记中的空流

时间:2017-06-19 08:42:56

标签: c# jquery html wcf

我有以下HTML代码:

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

在C#服务器部分,我有以下代码:

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

代码正在运行,但我想在html中知道我收到Stream.Null以便我可以显示错误消息而不是没有呈现任何内容的视频播放器。

你能给我一些提示我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:0)

由于Stream.Null只返回一个新的NullStream,这是一个长度为0的有效流,您只能检查该流是否为空。

在javascript中,您可以检查视频代码的duration值是否等于0。您可以在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>
  

加载指定视频的元数据时会发生loadedmetadata事件。视频的元数据包括:持续时间,维度和文本轨道。