Google Drive Videoları HTML5 ile Sayfada Yükletmek
Gezerken kısa kesitler halinde videolar çekiyorum. Çektiğim videoları amatör bir şekilde birleştirip, kolaj haline getirip sitemde paylaşmak istedim fakat videolar büyük boyutlu medyalar. Fotoğrafları bile 3.parti bir servisle çözerken videoları repoda depolamak anlamsız olurdu. İhtiyaç böyle ortaya çıktı ve araştırmaya başladım.
Başka birisi stackoverflow’da ‘HTML5 videosunu kullanarak Google Drive Videolarını yerleştirme’ şeklinde bir soru sormuş. Cevapta ise video indirme bağlantısına video id verilirse onayatabileceği yönündeydi. Bu cevap tüm ihtiyaçları karşılıyordu.
Hızlıca nasıl yapacağınızı anlatıyorum.
Google Drive üzerinden paylaşılan videoları HTML5 ile kendi playeriniz ile sayfada yüklemek için birkaç adımı takip etmek gerekiyor. Bu adımları takip ederek, Google Drive üzerinden paylaşılan videoları kendi playeriniz ile sayfada oynatabilirsiniz.
Google Drive Videoları Sitenize Ekleme #
- Google Drive’a öncelikle sitemizde yayınlayacağımız videoları yüklüyoruz.
- Yüklediğimiz videoyu herkese açık olacak şekilde paylaşıyoruz.
- Yüklediğimiz videoya çift tıklayıp önizlemesini açıyoruz ve sağ üst köşede bulunan üç noktaya tıklıyoruz.
- Açılan menüden “Yeni pencerede aç” seçeneğini seçiyoruz.
- Açılan yeni pencerede video ID’yi kopyalıyoruz. https://drive.google.com/file/d/ID/view Buradaki ID kısmını kopyalıyoruz.
- Artık bu ID ile videoyu sayfamızda oynatabiliriz.
<video width="320" height="240" controls>
<source src="https://drive.google.com/uc?export=download&id=ID" type="video/mp4">
</video>
Buradaki trick Google Drive dosya boyutu maks 99MB olan videolarınızı virüs kontrolü yapmadan indirmenizi sağlayabildiği için playerinize çekebilirsiniz. Fakat üstü boyutları oynatamazsınız hata verir. Bu yüzden videolarınızı 99MB’ın altında tutmanız gerekiyor.
Bu yapıyı özelleştirmek isterseniz #
Öncelikle sık kullanacaksanız bir fonksiyona bağlamakta fayda var.
<div data-video-type="reels" data-video-id="videoID" data-video-title="videoTitle" data-video-cover="videoCover">
<img src="videoCover" alt="videoTitle" />
<span>videoTitle</span>
</div>
function createPopupVideo(videoSrc, videoCover, videoTitle) {
const popupOverlay = document.createElement('div');
popupOverlay.classList.add('popup-video-overlay');
const popupVideo = document.createElement('div');
popupVideo.classList.add('popup-video');
popupVideo.innerHTML = `
<div class="close-button">×</div>
<video class="video-reels-frame" poster="${videoCover}" controlsList="nodownload" controls="false">
<source src="${videoSrc}" type="video/mp4">
Your browser does not support the video tag.
</video>
<div class="video-reels-desc-popup">
<span>${videoTitle}</span>
</div>
`;
const closeButton = popupVideo.querySelector('.close-button');
closeButton.addEventListener('click', function () {
popupOverlay.style.display = 'none';
popupOverlay.remove();
popupVideo.style.display = 'none';
popupVideo.remove();
});
popupOverlay.addEventListener('click', function () {
popupOverlay.style.display = 'none';
popupOverlay.remove();
popupVideo.style.display = 'none';
popupVideo.remove();
});
document.body.appendChild(popupOverlay);
document.body.appendChild(popupVideo);
return { overlay: popupOverlay, video: popupVideo };
}
const reelsPopups = document.querySelectorAll('[data-video-type="reels"]');
if (reelsPopups.length > 0) {
reelsPopups.forEach(function (reelsPopup) {
reelsPopup.addEventListener('click', function () {
const videoId = this.dataset.videoId;
const videoCover = this.dataset.videoCover;
const videoTitle = this.dataset.videoTitle;
const videoSrc = `https://drive.google.com/uc?&id=${videoId}`;
const popupVideo = createPopupVideo(videoSrc, videoCover, videoTitle);
});
});
}
.popup-video {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: rgba(24, 24, 27, 0.92);
padding: 5px;
border-radius: 15px;
z-index: 3;
@media (max-width: 767px) {
width: 80%;
}
&-overlay {
background-color: rgba(24, 24, 27, 0.92);
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 2;
}
.close-button {
background-color: rgba(24, 24, 27, 0.92);
display: flex;
align-items: center;
justify-content: center;
position: fixed;
right: -30px;
top: -30px;
color: #fff;
width: 30px;
height: 30px;
font-weight: 100;
font-size: 24px;
border-radius: 50%;
z-index: 3;
cursor: pointer;
}
video {
display: block;
width: 100%;
aspect-ratio: 9/16;
height: auto;
max-height: 80vh;
outline: none;
border: none;
border-radius: 10px;
margin: auto;
}
}
Gerisini kendinize göre özelleştirebilirsiniz.
Sonuç #
Örnek görmek isterseniz buraya bakabilirsiniz.