Làm thế nào để đặt hình ảnh thu nhỏ trên video HTML5?


119

Có cách nào để đặt hình ảnh thu nhỏ trên video HTML5 không? Tôi muốn xem một số hình ảnh trước khi chơi. Mã của tôi trông như thế này:

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

Cảm ơn!

Câu trả lời:


207

Thêm vào poster="placeholder.png"thẻ video.

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

Có hiệu quả không?


1
Để biết thêm thông tin, hãy xem trang web MDN: developer.mozilla.org/en-US/docs/Web/HTML/Element/video . Thuộc tính được hỗ trợ khá tốt.
jehon

89

Hiển thị Khung hình Đầu tiên Video của Bạn dưới dạng Hình thu nhỏ:

Thêm vào thẻ videopreload="metadata" của bạn và phần thứ hai của khung hình đầu tiên vào nguồn video của bạn :#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
Vấn đề với điều này là video bắt đầu từ chỉ định #t=0.5. Giả sử nếu bạn muốn hình thu nhỏ từ t = 8 thì vid sẽ bắt đầu từ giây thứ 8, điều đó không lý tưởng phải không :)
Marko

23

Nếu bạn muốn một khung hình đầu tiên của video làm hình thu nhỏ, bạn có thể sử dụng

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>

LƯU Ý: hãy đảm bảo về loại video của bạn (ví dụ: mp4, ogg, webm, v.v.)


4
Chỉ khi video được tải trước. Nếu không, nó sẽ vẫn hiển thị nền đen trên IE cho đến khi video được tải bởi trình duyệt!
Hafenkranich

3

Đó dường như là một hình ảnh phụ được hiển thị ở đó.

Bạn có thể thử sử dụng cái này

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

Bây giờ sử dụng jQuery phát video và ẩn hình ảnh dưới dạng

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

Cảm ơn bạn. Tôi đã không sử dụng các tùy chọn jQuery để chơi nhưng tôi có thể thử. Bạn có bất kỳ đề xuất tốt?
Ivijan Stefan Stipić

Đây là gợi ý tốt nhất, sử dụng điều này, bạn có thể tự động ẩn hình ảnh đang được hiển thị ở đó. Và chỉ đơn giản là phát video bằng $('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) thêm jquery bên dưới:

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

lưu ý: trong src đầu tiên (hiển thị) thêm liên kết youtube gốc.

2) chỉnh sửa thẻ iframe thành:

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

lưu ý: sao chép dán id video youtube sau khi nhúng / trong iframe src.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.