Tôi muốn có một video YouTube không có chromid được nhúng trước khi tải video của nó mà KHÔNG phát khi tải trang. Ngay bây giờ tôi đang sử dụng một kịch bản "chơi sau đó nhanh chóng tạm dừng" vụng về gây ra vấn đề nhỏ (rò rỉ âm thanh nửa giây và thất bại một chút). Đối với chức năng này dường như đơn giản, có cách nào tốt hơn/thanh lịch hơn để tải trước không?Tải trước một youtube youtube
Trả lời
Tôi có cùng một câu hỏi và đã xem qua câu hỏi này. Sau một số nghiên cứu, tôi nghĩ rằng tôi đã tìm thấy một câu trả lời sạch hơn, mặc dù tương tự.
Khi JavaScript API gọi OnYouTubePlayerReady
, bạn nhấn phát và thêm trình xử lý sự kiện vào onStateChange
sẽ được gọi mỗi khi người chơi thay đổi từ bộ đệm để phát.
Ví dụ: bên trong hàm bạn lắng nghe trạng thái 3 đang lưu vào bộ đệm và ngay sau khi được gọi, bạn tạm dừng video.
Bạn có thể xem kỹ thuật này hoạt động trong this jsFiddle.
Lưu ý phụ: Tôi không sử dụng khung JavaScript trong ví dụ của mình, nhưng bạn có thể dễ dàng đặt một vị trí vào đây.
Ngoài ra, tôi không thể trừu tượng thẻ tập lệnh ra khỏi phần nội dung của HTML bằng jsFiddle, nhưng tệp script.js
bên ngoài hoạt động tốt trên máy chủ của riêng tôi.
Gọi
player.cueVideoById(videoId:String);
Thay vì
player.loadVideoById(videoId:String);
Không hoạt động. Từ tài liệu chính thức: "cueVideoByID: Tải hình thu nhỏ của video được chỉ định và chuẩn bị trình phát để phát video. Trình phát không yêu cầu FLV cho đến khi playVideo() hoặc seekTo() được gọi." Nói cách khác, nó không thực sự bắt đầu đệm clip. – zakdances
Bạn nói đúng. Có vẻ như cách duy nhất là làm theo cách bạn đang làm. Tôi có thể đề nghị cố gắng lắng nghe sự kiện "playerStateChanged" và xem liệu tiểu bang có đang chơi hay không (1) sau đó tạm dừng cuộc gọi. Bạn có thể tạm dừng nó sớm hơn. – zachzurn
tôi đang tìm kiếm một giải pháp cho vấn đề này và chạy trên bài viết này:
Embed YouTube Videos Responsively without Increasing Load Time
Các trạng thái tóm tắt: Phương pháp này sẽ làm giảm kích thước của trang web của bạn bằng cách 300-400 KB trong khi làm cho trang web của bạn thân thiện với thiết bị di động.
Dán này trên trang:
<div class="youtube-container">
<div class="youtube-player" data-id="VIDEOID"></div>
</div>
Các javascript:
<script>
(function() {
var v = document.getElementsByClassName("youtube-player");
for (var n = 0; n < v.length; n++) {
var p = document.createElement("div");
p.innerHTML = labnolThumb(v[n].dataset.id);
p.onclick = labnolIframe;
v[n].appendChild(p);
}
})();
function labnolThumb(id) {
return '<img class="youtube-thumb" src="//i.ytimg.com/vi/' + id + '/hqdefault.jpg"><div class="play-button"></div>';
}
function labnolIframe() {
var iframe = document.createElement("iframe");
iframe.setAttribute("src", "//www.youtube.com/embed/" +
this.parentNode.dataset.id + "? autoplay=1&autohide=2&border=0&wmode=opaque&enablejsapi=1&controls=0&showinfo=0");
iframe.setAttribute("frameborder", "0");
iframe.setAttribute("id", "youtube-iframe");
this.parentNode.replaceChild(iframe, this);
}
</script>
CSS:
<style>
.youtube-container {
display: block;
margin: 20px auto;
width: 100%;
max-width: 600px;
}
.youtube-player {
display: block;
width: 100%;
/* assuming that the video has a 16:9 ratio */
padding-bottom: 56.25%;
overflow: hidden;
position: relative;
width: 100%;
height: 100%;
cursor: hand;
cursor: pointer;
display: block;
}
img.youtube-thumb {
bottom: 0;
display: block;
left: 0;
margin: auto;
max-width: 100%;
width: 100%;
position: absolute;
right: 0;
top: 0;
height: auto
}
div.play-button {
height: 72px;
width: 72px;
left: 50%;
top: 50%;
margin-left: -36px;
margin-top: -36px;
position: absolute;
background: url("http://i.imgur.com/TxzC70f.png") no-repeat;
}
#youtube-iframe {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
</style>
Refe r cho các bình luận bài viết gốc cho các đề xuất sửa đổi bổ sung và cải tiến.
Tôi có thể thiếu một số thứ, nhưng khi đọc bài viết, mã này không tải trước một YouTube video mà không chơi nó, và do đó không phải là câu trả lời cho câu hỏi như đã nêu. –
- 1. Tải API YouTube trong jQuery
- 2. Tải xuống video từ YouTube
- 3. Tạm dừng video youtube, youtube api
- 4. Tải tiêu đề của video trên YouTube
- 5. Tải video lên youtube từ trình duyệt
- 6. Tải tiêu đề từ video trên YouTube
- 7. Tải các thể loại nhạc trong YouTube
- 8. Cách tải video lên YouTube trong Android?
- 9. Tải xuống các video Youtube bằng PHP
- 10. Bật kiếm tiền trên video trên YouTube bằng API YouTube
- 11. Trình tải xuống phim trên YouTube hoạt động như thế nào? - YouTube
- 12. youtube api cuối video tải một chức năng
- 13. Youtube iframe wmode issue
- 14. Quản lý chú thích trên YouTube thông qua API YouTube
- 15. Nhúng video youtube không có liên kết youtube
- 16. Tải hình ảnh hồ sơ kênh YouTube bằng channelId
- 17. youtube embbed video iphone
- 18. ontimeupdate với API YouTube
- 19. Video.js youtube video
- 20. Xác thực API Youtube - Iphone
- 21. ios7 UIWebView Youtube Video
- 22. Youtube Api android autostart
- 23. GUID giống như YouTube
- 24. RTSP youtube link
- 25. iOS 6 nhúng youtube
- 26. Tải video lên trên youtube bằng cách kéo và thả
- 27. URL để tải tệp video hoặc luồng từ YouTube?
- 28. Kịch bản tải xuống video từ youtube (lỗi 150)
- 29. Cách tải hình ảnh kênh Youtube qua tên người dùng?
- 30. Nhận URL tải xuống cho video trên YouTube (Android/Java)
Tôi thấy rằng trạng thái 3 không phải lúc nào cũng là một phần của chuỗi tải trên kết nối tốc độ cao của tôi. Thay vào đó, những gì làm việc là lắng nghe trạng thái phát, tắt âm thanh và tạm dừng. – trcarden
Kể từ năm 2017.11.12, khi tôi cố gắng chạy JSFiddle trong Chrome, tôi thấy 'Bạn cần Flash Player phiên bản 8 trở lên để xem nội dung này.' –