Küçük resim HTML5 videoda nasıl ayarlanır?


119

HTML5 videoda küçük resim oluşturmanın bir yolu var mı? Oynamadan önce bazı resimler görmek istiyorum. Kodum şöyle görünüyor:

<video width="470" height="255" controls>
    <source src="video.mp4" type="video/mp4">
    <source src="video.ogg" type="video/ogg">
    <source src="video.webm" type="video/webm">
    <object data="video.mp4" width="470" height="255">
    <embed src="video.swf" width="470" height="255">
    </object>
</video>

Teşekkürler!

Yanıtlar:


207

poster="placeholder.png"Video etiketine ekleyin .

<video width="470" height="255" poster="placeholder.png" controls>
    <source src="video.mp4" type="video/mp4">
    <source src="video.ogg" type="video/ogg">
    <source src="video.webm" type="video/webm">
    <object data="video.mp4" width="470" height="255">
    <embed src="video.swf" width="470" height="255">
    </object>
</video>

İşe yarıyor mu?


1
Daha fazla bilgi için, MDN web sitesine bakın: developer.mozilla.org/en-US/docs/Web/HTML/Element/video . Özellik oldukça iyi destekleniyor.
jehon

89

Videonuzun İlk Karesini Küçük Resim Olarak Görüntüle:

Ekle preload="metadata"sizin için video etiketine ve ilk çerçevesinin saniyede #t=0.5sizin için video kaynağı :

<video width="400" controls="controls" preload="metadata">
  <source src="https://www.w3schools.com/html/mov_bbb.mp4#t=0.5" type="video/mp4">
</video>


11
Bununla ilgili sorun, videonun belirtilen yerden başlamasıdır #t=0.5. Diyelim ki t = 8'den küçük resim istiyorsanız, vid 8. saniyeden başlayacak, bu ideal değil :)
Marko

23

Bir videonun ilk karesini küçük resim olarak istiyorsanız, kullanabileceğinizden

Add #t=0.1 to your video source, like below

<video width="320" height="240" controls>
  <source src="video.mp4#t=0.1" type="video/mp4">
</video>

NOT: video türünüzden emin olun (ör. Mp4, ogg, webm vb.)


4
Yalnızca video önceden yüklenmişse. Aksi takdirde, video tarayıcı tarafından yüklenene kadar IE'de siyah bir arka plan göstermeye devam edecektir!
Hafenkranich

3

Bu, orada gösterilen fazladan bir resim gibi görünüyor.

Bunu kullanmayı deneyebilirsin

<img src="/images/image_of_video.png" alt="image" />
/* write your code for the video here */

Şimdi jQuery kullanarak videoyu oynatın ve görüntüyü

$('img').click(function () {
  $(this).hide();
  // use the parameters to play the video now..
})

Teşekkür ederim. Oyun için jQuery seçeneklerini kullanmadım ama deneyebilirim. Herhangi bir iyi öneriniz var mı?
Ivijan Stefan Stipić

Bu en iyi öneridir, bunu kullanarak orada gösterilen resmi otomatik olarak gizleyebilirsiniz. Ve videoyu kullanarak $('video').play();:)
Afzaal Ahmad Zeeshan

3
<?php
$thumbs_dir = 'E:/xampp/htdocs/uploads/thumbs/';
$videos = array();
if (isset($_POST["name"])) {
 if (!preg_match('/data:([^;]*);base64,(.*)/', $_POST['data'], $matches)) {
  die("error");
 }
 $data = $matches[2];
 $data = str_replace(' ', '+', $data);
 $data = base64_decode($data);
 $file = 'text.jpg';
 $dataname = file_put_contents($thumbs_dir . $file, $data);
}
?>
//jscode
<script type="text/javascript">
 var videos = <?= json_encode($videos); ?>;
 var video = document.getElementById('video');
 video.addEventListener('canplay', function () {
     this.currentTime = this.duration / 2;
 }, false);
 var seek = true;
 video.addEventListener('seeked', function () {
    if (seek) {
         getThumb();
    }
 }, false);

 function getThumb() {
     seek = false;
     var filename = video.src;
     var w = video.videoWidth;//video.videoWidth * scaleFactor;
     var h = video.videoHeight;//video.videoHeight * scaleFactor;
     var canvas = document.createElement('canvas');
     canvas.width = w;
     canvas.height = h;
     var ctx = canvas.getContext('2d');
     ctx.drawImage(video, 0, 0, w, h);
     var data = canvas.toDataURL("image/jpg");
     var xmlhttp = new XMLHttpRequest;
     xmlhttp.onreadystatechange = function () {
         if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
         }
     }
     xmlhttp.open("POST", location.href, true);
     xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     xmlhttp.send('name=' + encodeURIComponent(filename) + '&data=' + data);
 }
  function failed(e) {
     // video playback failed - show a message saying why
     switch (e.target.error.code) {
         case e.target.error.MEDIA_ERR_ABORTED:
             console.log('You aborted the video playback.');
             break;
         case e.target.error.MEDIA_ERR_NETWORK:
             console.log('A network error caused the video download to fail part-way.');
             break;
         case e.target.error.MEDIA_ERR_DECODE:
             console.log('The video playback was aborted due to a corruption problem or because the video used features your browser did not support.');
              break;
          case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
              console.log('The video could not be loaded, either because the server or network failed or because the format is not supported.');
              break;
          default:
              console.log('An unknown error occurred.');
              break;
      }


  }
</script>
//Html
<div>
    <video   id="video" src="1499752288.mp4" autoplay="true"  onerror="failed(event)" controls="controls" preload="none"></video>
</div>

-1

<video width="400" controls="controls" preload="metadata">
  <source src="https://www.youtube.com/watch?v=Ulp1Kimblg0">
</video>


-1

1) aşağıdaki jquery'yi ekleyin:

$thumbnail.on('click', function(e){
 e.preventDefault();
 src = src+'&autoplay=1'; // src: the original URL for embedding 
 $videoContainer.empty().append( $iframe.clone().attr({'src': src}) ); // $iframe: the original iframe for embedding
 }
);

not: ilk src'ye (gösterilen) orijinal youtube bağlantısını ekleyin.

2) iframe etiketini şu şekilde düzenleyin:

<iframe width="1280" height="720" src="https://www.youtube.com/embed/nfQHF87vY0s?autoplay=1" frameborder="0" allowfullscreen></iframe>

not: youtube video kimliğini yerleştirmeden sonra / iframe src'ye kopyalayıp yapıştırın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.