Tôi đang cố gắng xây dựng một trình phát video, hoạt động ở mọi nơi. cho đến nay tôi sẽ đi với:
<video>
<source src="video.mp4"></source>
<source src="video.ogv"></source>
<object data="flowplayer.swf" type="application/x-shockwave-flash">
<param name="movie" value="flowplayer.swf" />
<param name="flashvars" value='config={"clip":"video.mp4"}' />
</object>
</video>
(như đã thấy trên một số trang web, ví dụ video cho mọi người ) cho đến nay, rất tốt.
nhưng bây giờ tôi cũng muốn một số loại danh sách phát / menu cùng với trình phát video, từ đó tôi có thể chọn các video khác. những người nên được mở trong trình phát của tôi ngay lập tức. vì vậy tôi sẽ phải "tự động thay đổi nguồn của video" (như đã thấy trên dev.opera.com/articles/everything-you-need-to-ledge-html5-video-audio/ - phần "Hãy xem một bộ phim khác ") Với javascript. Hãy quên đi phần flashplayer (và do đó là IE) trong thời gian này, tôi sẽ cố gắng giải quyết vấn đề đó sau.
Vì vậy, mã JS của tôi để thay đổi các <source>
thẻ phải giống như:
<script>
function loadAnotherVideo() {
var video = document.getElementsByTagName('video')[0];
var sources = video.getElementsByTagName('source');
sources[0].src = 'video2.mp4';
sources[1].src = 'video2.ogv';
video.load();
}
</script>
vấn đề là, điều này không hoạt động trong tất cả các trình duyệt. cụ thể là firefox = O có một trang đẹp, nơi bạn có thể quan sát vấn đề tôi đang gặp phải: http://www.w3.org/2010/05/video/mediaevents.html
Ngay khi tôi kích hoạt phương thức load () (trong firefox, hãy nhớ đến bạn), trình phát video sẽ chết.
bây giờ tôi đã phát hiện ra rằng khi tôi không sử dụng nhiều <source>
thẻ, mà thay vào đó chỉ là một thuộc tính src trong<video>
thẻ, toàn bộ điều này hoạt động trong firefox.
vì vậy kế hoạch của tôi là chỉ sử dụng thuộc tính src đó và xác định tệp thích hợp bằng cách sử dụng canPlayType () .
Tôi đang làm sai bằng cách nào đó hoặc làm phức tạp mọi thứ ??
<source>
thẻ. sau đó tôi cho rằng điều đó sẽ dễ dàng hơn