我有以下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 :(得分: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事件。视频的元数据包括:持续时间,维度和文本轨道。