我有以下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
,这样我就可以显示一条错误消息,而不是不渲染任何内容的视频播放器。
你能给我一些提示吗?我怎样才能做到这一点?
发布于 2017-06-19 08:59:59
由于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事件。视频的元数据包括:持续时间、维度和文本轨道。
https://stackoverflow.com/questions/44625889
复制