วิธีตั้งค่าภาพขนาดย่อในวิดีโอ HTML5


119

มีวิธีตั้งค่าภาพขนาดย่อในวิดีโอ HTML5 หรือไม่? ฉันต้องการดูภาพก่อนเล่น รหัสของฉันมีลักษณะดังนี้:

<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>

ขอบคุณ!

คำตอบ:


207

เพิ่มposter="placeholder.png"ลงในแท็กวิดีโอ

<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>

ได้ผลหรือไม่


1
สำหรับข้อมูลเพิ่มเติมโปรดดูที่เว็บไซต์ MDN: developer.mozilla.org/en-US/docs/Web/HTML/Element/video แอตทริบิวต์ได้รับการสนับสนุนค่อนข้างดี
jehon

89

แสดงเฟรมแรกของวิดีโอเป็นภาพขนาดย่อ:

เพิ่ม preload="metadata"ลงในแท็กวิดีโอของคุณและเฟรมที่สองของเฟรมแรก#t=0.5ลงในแหล่งวิดีโอของคุณ:

<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
#t=0.5ปัญหากับเรื่องนี้ก็คือวิดีโอเริ่มต้นจากที่ระบุไว้ บอกว่าคุณต้องการภาพขนาดย่อจาก t = 8 งั้น vid จะเริ่มจากวินาทีที่ 8 ซึ่งไม่เหมาะเลย :)
Marko

23

หากคุณต้องการเฟรมแรกของวิดีโอเป็นภาพขนาดย่อมากกว่าที่คุณสามารถใช้ได้

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>

บันทึก:ตรวจสอบประเภทวิดีโอของคุณ (เช่น mp4, ogg, webm ฯลฯ )


4
เฉพาะในกรณีที่วิดีโอถูกโหลดไว้ล่วงหน้า มิฉะนั้นจะยังคงแสดงพื้นหลังสีดำบน IE จนกว่าวิดีโอจะโหลดโดยเบราว์เซอร์!
Hafenkranich

3

ดูเหมือนจะเป็นภาพพิเศษที่แสดงอยู่ที่นั่น

คุณสามารถลองใช้สิ่งนี้

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

ตอนนี้ใช้ jQuery เล่นวิดีโอและซ่อนภาพเป็นไฟล์

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

ขอบคุณ. ฉันไม่ได้ใช้ตัวเลือก jQuery ในการเล่น แต่ฉันสามารถลองได้ คุณมีข้อเสนอแนะที่ดีหรือไม่?
Ivijan Stefan Stipić

นี่เป็นคำแนะนำที่ดีที่สุดโดยใช้วิธีนี้คุณสามารถซ่อนรูปภาพที่กำลังแสดงอยู่ที่นั่นโดยอัตโนมัติ และเล่นวิดีโอโดยใช้$('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

1) เพิ่ม jquery ด้านล่าง:

$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
 }
);

หมายเหตุ: ใน src แรก (แสดง) เพิ่มลิงค์ youtube เดิม

2) แก้ไขแท็ก iframe เป็น:

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

หมายเหตุ: คัดลอกวางรหัสวิดีโอ youtube หลังการฝัง / ใน iframe src

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.