2017-06-19 83 views
1

我有以下的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,以便我可以顯示一個錯誤消息,而不是一個視頻播放器不呈現任何東西。

你能給我一些提示我怎麼能做到這一點?

+0

我想在html中知道我收到一個空流。 – Lucian

回答

0

由於Stream.Null只是返回一個新的NullStream這是一個有效的流,長度爲0 bites,您只能檢查流是否爲空。

在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事件當用於指定的視頻元數據已被加載發生。視頻的元數據包括:持續時間,維度和文本軌道。

+0

由於某些原因,活動不會啓動。我的視頻元素是dinamically添加,所以我使用了下面的代碼:$(document).on('loadedmetadata','video',function(evt) – Lucian

+0

@Lucian這不會工作,像這樣你註冊'loadedmetadata'你需要像我在回答中描述的那樣做,如果你動態地添加你的視頻 – NtFreX

+0

相同的,將不會觸發如果我改變loadedmetadata與點擊它將工作 – Lucian