我想在我的网页上使用html5视频,这是代码:
<video id="vid" width="100%" autoplay loop>
<source src="video/video.webm" type="video/webm">
<source src="video/video.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
问题在于,当我使用webm作为视频源时:
<source src="video/video.webm" type="video/webm">
它在chrome和FF上运行良好。 但是只要我加上mp4:
<source src="video/video.webm" type="video/webm">
<source src="video/video.mp4" type="video/mp4">
Chrome会显示黑屏和文本“等待视频”,但Safari和FF会按预期显示。
任何建议让它在所有这些浏览器上播放将不胜感激。 感谢。
答案 0 :(得分:6)
这是我发现的解决方案,这对我的案例很有用,
首先,将视频嵌入你的html:
<video id="videoId" width="100%" autoplay loop>
<source src="main.webm" type="video/webm">
<source src="main.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
然后检测浏览器是否为chrome:
var isChrome = !!window.chrome;
var isIE = /*@cc_on!@*/false;
如果是Chrome,请用webm版本替换视频。 (对于那些自己没有遇到问题的人: 如果你同时嵌入mp4和webm,chrome将不会播放任何一个,所以你必须只嵌入“webm”
if( isChrome ) {
$("#videoId").replaceWith($('<video id="videoId" width="100%" autoplay loop><source src="video.webm" type="video/webm"></video>'));
}
至于IE: 在我的情况下,我用图像替换了html5视频:
if( isIE ) {
$("#videoId").replaceWith($('<img id="videoId" src="img/video.jpg" />'));
}
答案 1 :(得分:4)
我遇到了同样的问题,并且无法通过任何提议的解决方案解决此问题,无论是在上面还是在其他线程中(更新Google Chrome的版本或禁用Chrome的硬件加速也无效。)
最终解决它的问题是将视频文件转换为不同的mp4格式。
原来我用MP4 VIDEO编码器转换了原来的mp4,我应该使用H.264 Normal编码器。
这是完整的代码:
<video width="320" height="240" controls>
<source src="video/Ruby.ogv" type="video/ogg" />
<source src="video/Ruby.webm" type="video/webm" />
<source src="video/Ruby-iPad.mp4" type="video/mp4" />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="240" id="Ruby" align="middle">
<param name="movie" value="video/Ruby.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="false" />
<param name="loop" value="false" />
<param name="menu" value="true" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="video/Ruby.swf" width="330" height="295" id="Ruby">
<param name="movie" value="video/Ruby.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#cccccc" />
<param name="play" value="false" />
<param name="loop" value="false" />
<param name="menu" value="true" />
<!--<![endif]-->
<img src="video/Ruby.jpg" alt="No video playback capabilities" />
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</video>
<p class="caption"><em>Ruby</em> (fragment), ICF Hastings 2013.</p>
上面的代码是“Video For Everybody”方法的改编版。您可以在http://css-tricks.com/snippets/html/video-for-everybody-html5-video-with-flash-fallback/
找到更多信息我使用旧版本的Wondershare Video Converter,但您可以通过http://video.online-convert.com/
等免费在线服务完成同样的工作答案 2 :(得分:3)
确保您拥有HTML5 doctype:
<!DOCTYPE html>
这解决了我的问题。
答案 3 :(得分:2)
尝试交换两者,首先输入 mp4 ,然后输入 webm 代码,看看会发生什么。我有这个,
<div id="ModelVideo">
<video max-width="100%" controls autoplay muted>
<source src="movie1.mp4" type="video/mp4">
<source src="movie1.webm" type="video/webm" controls>
Your browser does not support the video tag.
</video>
</div>
并且我的Chrome工作正常,我的mp4就是这样,但在其他浏览器中无法测试,虽然我的Dreamweaver也在Safari中测试,但两者似乎都运行良好。
(不要笑,仍在研究website)
也许你可以告诉我如何成功控制音量,似乎有问题。
答案 4 :(得分:0)
Chrome的问题在于,一旦下载了视频,就无法播放。
您可以通过添加一个小的javascript代码段来解决此问题:
this.interval = setInterval(function(){
this.countForVideo = document.getElementById('vid').readyState;
if(this.countForVideo == 4){
document.getElementById('vid').play();
clearInterval(this.interval);
}
},2000);
这将检查是否每2秒下载一次视频。如果视频已下载,它将播放视频并停止播放间隔。