Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah yang perlu saya lakukan jika teg video html5 tidak boleh dimainkan?

Apakah yang perlu saya lakukan jika teg video html5 tidak boleh dimainkan?

藏色散人
藏色散人asal
2023-01-28 09:36:233822semak imbas

Penyelesaian kepada masalah bahawa tag video HTML5 tidak boleh dimainkan: 1. Gunakan tangkapan skrin video untuk membuat butang main dan menduduki kedudukan asal video 2. Pantau acara klik butang pemegang tempat dan gunakan "video.play() "; 3. Hanya sembunyikan imej pemegang tempat dan memuatkan.

Apakah yang perlu saya lakukan jika teg video html5 tidak boleh dimainkan?

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi HTML5, komputer DELL G3

Apakah yang perlu saya lakukan jika teg video html5 tidak boleh dimainkan?

Teg IOS-HTML5-Video tidak boleh dimainkan

teg video h5 tidak boleh dimainkan dalam UIwebview, Safari boleh,

Some It berfungsi pada telefon mudah alih, tetapi tidak pada sesetengah telefon mudah alih

Ia konsisten dengan video.js disyorkan untuk menggunakan https://videojs.com/

Jika anda ingin merasai sendiri prinsip tersebut, anda boleh menyalin kod demo di penghujung artikel dan menjalankannya

Yang tradisional kaedahnya ialah menulis tag video dalam HTML dan klik main

TETAPI , ditulis seperti ini tidak akan berfungsi pada beberapa mesin ujian seperti IOS 10.3.2/3 11.x.x iPhone 6/6p 7, dsb., tetapi ia akan berfungsi pada telefon mudah alih peribadi Sesetengah telefon mudah alih boleh berfungsi dan beberapa telefon bimbit tidak boleh.
<video src="xxx.mp4" controls poster="url?vframe/jpg/offset/5" preload="load"></video>
// ?vframe/jpg/offset/5  这个是七牛接口,取截图用的,5就是第5秒截图

Selepas pengubahsuaian:

Langkah 1: Gunakan tangkapan skrin video untuk membuat butang main untuk menduduki kedudukan asal video

Langkah 2: Pantau pendudukan Klik peristiwa butang, gunakan video.play(), anda boleh melihat bahawa video telah diminta dan dimuatkan

Langkah 3: Terdapat janji untuk memuatkan video, dan kemudian pemegang tempat adalah Hanya sembunyikan imej dan muatkan

petua:

    Telefon bimbit/sistem yang berbeza akan mempunyai julat permintaan yang berbeza, yang biasanya dibahagikan kepada 3 - 5 206 permintaan.
  • console.time("loading milisaat"); anda boleh melihat masa pemuatan, yang pada asasnya sama dengan apa yang ditangkap oleh Charles.
  • Telefon mudah alih/sistem yang berbeza juga akan mempunyai prestasi yang berbeza dan sesetengahnya akan kembali sebaik sahaja satu klik, dan sesetengahnya perlu menunggu sehingga video dimuatkan sepenuhnya sebelum dikembalikan.
  • Atribut DOM video boleh digunakan untuk mendapatkan jumlah yang dimuatkan pada masa ini dan jumlah amaun bahagikan dengan satu untuk mendapatkan peratusan untuk atribut tertentu, anda boleh lihat> ://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/ video
  • Alamat dalam talian: http://m.soyoung.com/item/detail ?type=0&sys=3&item_id=263&cityId=0

kod demo (mudah Beberapa rakan menghantar mesej peribadi dan mahu mengambil demo terus~)

<!DOCTYPE html>
<html data-dpr="1" style="font-size: 55px;">
    <head>
        <meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1"/>
        <title>视频DEMO</title>
    </head>
    <body style="font-size: 24px;">
        <style>
            html,body,video{
                margin: 0;
                padding: 0;
            }
            .pub-swipe .media {
                position: relative;
                font-size: 0;
                margin-bottom: 0.4rem;
            }
            .pub-swipe .media img,
            .pub-swipe .media video {
                display: block;
                margin: 0 auto;
                width: 100%;
                min-height: 4.667rem;
            }
            .pub-swipe .desc,
            .pub-swipe .media img {
                margin-bottom: 0.267rem;
            }
            .pub-swipe .media video {
                width: 100%;
                height: 4.667rem;
            }
            .pub-swipe .media img.video-go {
                width: 2.707rem;
                height: 2.707rem;
                min-height: 0;
                position: absolute;
                left: 50%;
                margin-left: -.853rem;
                top: 1.3rem;
                z-index: 5;
            }
            .hide {
                display: none !important;
            }
        </style>
        <div class="pub-swipe">
            <p class="media">
                <i class="video-i" data-src="http://videosy.soyoung.com/item-263.MP4">
                    <img  src="http://videosy.soyoung.com/item-263.MP4?vframe/jpg/offset/5"/ alt="Apakah yang perlu saya lakukan jika teg video html5 tidak boleh dimainkan?" >
                    <img  class="video-go" src="https://mstatic.soyoung.com/m/static/img/product/video_go.png"/ alt="Apakah yang perlu saya lakukan jika teg video html5 tidak boleh dimainkan?" >
                </i>
            </p>
        </div>
        <script>
            /**
         * 视频加载兼容处理
         */
            var isIPhone = window.navigator.appVersion.match(/iphone/gi);
            var creat_video = function () {
                var _video = document.getElementsByClassName(&#39;video-i&#39;);
                if (_video.length > 0) {
                    for (var i = 0; i < _video.length; i++) {
                        var _that = _video[i];
                        _that.addEventListener(&#39;click&#39;, function (e) {
                            var _this = e.currentTarget,
                                _videoUrl = _this.getAttribute(&#39;data-src&#39;),
                                _img = _this.children[0].getAttribute(&#39;src&#39;),
                                _dom = document.createElement(&#39;video&#39;),
                                _autoPlayAllowed = true,
                                _loading = document.createElement(&#39;div&#39;),
                                _p,
                                _process = document.createElement(&#39;i&#39;);
                            _noSound = document.createElement(&#39;em&#39;);
                            if (_this.getAttribute(&#39;data-video&#39;)) {
                                var _video = _this.parentNode.querySelectorAll(&#39;video&#39;);
                                var _noSound = _this.parentNode.querySelectorAll(&#39;.no-sound&#39;);
                                if (_video.length > 0) {
                                    _dom = _video[0];
                                    // if (_dom.ended) {
                                    if (isIPhone) {
                                        //修改Ios11状态不准,视频无法播放的问题
                                        if (_dom.src.indexOf(&#39;random&#39;) > -1) {
                                            _dom.src = _dom.src.split(&#39;random=&#39;)[0] + &#39;random=&#39; + _dom.src.split(&#39;random=&#39;)[1] + 1;
                                        } else {
                                            _dom.src = _dom.src + &#39;?random=&#39; + Math.floor(Math.random() * (100 - 10 + 1) + 10);
                                        }
                                    }
                                    _noSound[0].classList.remove(&#39;hide&#39;);
                                    _dom.play();
                                    _this.classList.add(&#39;hide&#39;);
                                    _dom.classList.remove(&#39;hide&#39;);
                                    // }
                                }
                                return;
                            }
                            _this.setAttribute(&#39;data-video&#39;, &#39;1&#39;);
                            _process.setAttribute(&#39;class&#39;, &#39;vjs-process&#39;);
                            _process.innerHTML = &#39;加载中...&#39;;
                            _loading.setAttribute(&#39;class&#39;, &#39;vjs-loading-spinner&#39;);
                            _dom.setAttribute(&#39;src&#39;, _videoUrl);
                            _dom.setAttribute(&#39;controls&#39;, &#39;controls&#39;);
                            _dom.setAttribute(&#39;autoPlay&#39;, &#39;false&#39;);
                            // _dom.setAttribute(&#39;x5-video-player-type&#39;, &#39;h5&#39;);
                            _this.parentNode.appendChild(_loading);
                            _this.parentNode.appendChild(_process);
                            _this.parentNode.classList.add(&#39;vjs-waiting&#39;);
                            _noSound.setAttribute(&#39;class&#39;, &#39;no-sound&#39;);
                            _noSound.innerHTML = &#39;无声&#39;;
                            // _dom.setAttribute(&#39;webkit-playsinline&#39;, &#39;webkit-playsinline&#39;);
                            // _dom.setAttribute(&#39;playsinline&#39;, &#39;playsinline&#39;);
                            _dom.setAttribute(&#39;poster&#39;, _img);
                            _p = _dom.play();
                            console.time("加载毫秒");
                            var _dom_buffered_promise = function () {
                                var _end = _dom.buffered.end(0);
                                var _duration = _dom.duration;
                                var _a = Math.round(_end / _duration * 100);
                                _process.innerHTML = _a + &#39;%&#39;;
                                console.log(_end + &#39; &#39; + _duration)
                                if (_a < 10) {
                                    setTimeout(_dom_buffered, 200);
                                } else {
                                    _dom_buffered();
                                }
                            };
                            var _dom_buffered = function () {
                                _this.parentNode.classList.remove(&#39;vjs-waiting&#39;);
                                _this.classList.add(&#39;hide&#39;);
                                _process.classList.add(&#39;hide&#39;);
                                _this.parentNode.appendChild(_dom);
                                _this.parentNode.appendChild(_noSound);
                                _dom.addEventListener(&#39;ended&#39;, function () {
                                    _dom.classList.add(&#39;hide&#39;);
                                    _this.classList.remove(&#39;hide&#39;);
                                    _noSound.classList.add(&#39;hide&#39;);
                                });
                                _dom.currentTime = 0;
                                console.timeEnd("加载毫秒");
                            };
                            if (_p instanceof Promise) {
                                _p.catch(function (error) {
                                    console.log(error.message);
                                    if (error.name === &#39;NotAllowedError&#39;) {
                                        _autoPlayAllowed = false;
                                    }
                                }).then(function (e) {
                                    if (_autoPlayAllowed) {
                                        _dom_buffered_promise();
                                    }
                                });
                            } else {
                                //ios8-9拿不到promise需要给个延时处理
                                setTimeout(function () {
                                    _dom_buffered();
                                }, 4000);
                            }
                        });
                    }
                }
            };
            new creat_video();
        </script>
    </body>
</html>

Apakah yang perlu saya lakukan jika teg video html5 tidak boleh dimainkan?Kajian yang disyorkan: "

Tutorial Video HTML5

"

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika teg video html5 tidak boleh dimainkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn