JS预加载视频音频/视频获取截图技巧分享
本文主要介绍了JS实现预加载视频音频/视频获取截图(返回canvas截图)的相关资料,需要的朋友可以参考下,希望能帮助到大家。
#load-media.js
/** * Create by Capricorncd 2017 */ // 同域资源实现视频截图,可上传的图片数据格式 // 非同域资源实现canvas截图预览 // 提示码 const CODES = { 0: 'success', 1: 'The url is not valid', 2: 'onerror' } /** * constructor * @param opts.url 音频|视频URL * @param opts.type 'audio|video' * @param opts.callback 回调函数 */ function loadMedia(opts) { this.callback = opts.callback || function (res) { console.log(res); } // 初始化 this.init(opts); } // prototype loadMedia.prototype = { /** * 初始化media * @param url */ init: function (opts) { let self = this; if (!opts.url || typeof opts.url !== 'string') { this.callback({code: 1, msg: CODES[1]}); return; } // 创建media let mediaType = opts.type === 'audio' ? 'audio' : 'video'; this.media = document.createElement(mediaType); console.log('this.media', this.media); // loaded this.listener('canplaythrough', function (e) { // 截图 if (mediaType === 'video') { self.screenshot(); } else { self.callback({ code: 0, msg: CODES[0], thumb: null, media: this.media, canvas: null }); } }); // error this.listener('error', function (e) { self.callback({code: 2, msg: CODES[2], data: e}); }) this.media.setAttribute('src', opts.url); }, screenshot: function () { // create canvas let canvas = document.createElement('canvas'); canvas.width = this.media.videoWidth; canvas.height = this.media.videoHeight; let ctx = canvas.getContext('2d'); // 截取 ctx.drawImage(this.media, 0, 0); let thumb = null; // 非跨域资源 // !!非同域资源无法获取数据 try { let type = 'image/png'; let data = canvas.toDataURL(type); thumb = this.toBlobData(data, type); } catch (e) {} this.callback({ code: 0, msg: CODES[0], thumb: thumb, media: this.media, canvas: canvas }) }, // 数据转换 toBlobData: function (data, type) { // 获取base64数据 // base64数据格式: // "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAkGB+wgHBgkIBwgKCgkLDRYPDQw//9k=" data = window.atob(data.split(',')[1]); let ia = new Uint8Array(data.length); for (let i = 0; i < data.length; i++) { ia[i] = data.charCodeAt(i); }; // canvas.toDataURL 返回的默认格式是 image/png return new Blob([ia], {type: type}); }, /** * addEventListener 事件监听 * @param en EventName * @param callback */ listener: function (en, callback) { this.media.addEventListener(en, function (e) { if (callback) { callback(e); } else { console.warn(this); } }, false); } /** * 资源是否跨域 * @param url 资源地址 * @returns {boolean} */ // isCrossDomain: function (url) { // let loc, host, protocol; // loc = window.location; // host = loc.host; // protocol = loc.protocol; // // 是否为http链接 // if (/(http|https):\/\//.test(url)) { // if (url.indexOf(protocol + '//' + host) >= 0) { // return false; // } else { // return true; // } // } // // './xxx.mp4' '/xxx.mp4' 'xxx.mp4' // return false; // } }
export default loadMedia;
// 参考资料 // HTML5的Video标签的属性,方法和事件汇总 // http://www.cnblogs.com/TF12138/p/4448108.html # 使用 import loadMedia from '@/common/js/load-media' let loadVideo = new loadMedia({ type: 'video', url: 'http://xmqvip1-1253933147.file.myqcloud.com/chat/video/60/2017/09/29/qgj1c8K7oaYn-SCVideo-Merged.mp4', callback: handleCallback }) function handleCallback (res) { console.log(res) // canplaythrough if (res.code === 0) { } // error if (res.code === 2) { } }
相关推荐:
javascript - 如何使用phantomjs获取截图并保存
Atas ialah kandungan terperinci JS预加载视频音频/视频获取截图技巧分享. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

1. Tekan kekunci menang + kekunci r, masukkan regedit, dan klik OK. 2. Dalam tetingkap editor pendaftaran yang dibuka, kembangkan: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlGraphicsDriversDCI, pilih Tamat Masa di sebelah kanan dan klik dua kali. 3. Kemudian tukar 7 dalam [Data Numerik] kepada 0, dan sahkan untuk keluar.

Baru-baru ini, ramai pengguna sedang mempertimbangkan untuk menggantikan telefon bimbit mereka, dan Redmi13C ialah pilihan yang sangat menjimatkan. Prestasi dan konfigurasi telefon ini sangat baik Untuk memudahkan penggunaan harian, izinkan saya memperkenalkan secara ringkas cara mengambil tangkapan skrin pada Redmi 13C. Mari kita ketahui bersama. Cara mengambil tangkapan skrin pada Redmi 13c 1. Kekunci pintasan untuk mengambil tangkapan skrin: Tekan butang kuasa dan kekunci kelantangan turun telefon Redmi pada masa yang sama untuk mengambil tangkapan skrin. 2. Tangkapan skrin gerak isyarat: Masukkan tetapan telefon Redmi, cari "Lagi tetapan", cari dan klik "Gerak isyarat dan pintasan kekunci", kemudian dayakan operasi "tarik turun tiga jari" dan tetapkannya untuk mengambil tangkapan skrin. Dengan cara ini, apabila anda perlu mengambil tangkapan skrin, anda hanya perlu meluncur ke bawah pada skrin dengan tiga jari untuk mengambil tangkapan skrin. 3. Ambil tangkapan skrin bar pemberitahuan: dari skrin telefon

Ciri tangkapan skrin tidak berfungsi pada iPhone anda? Mengambil tangkapan skrin adalah sangat mudah kerana anda hanya perlu menahan butang Naik Kelantangan dan butang Kuasa pada masa yang sama untuk meraih skrin telefon anda. Walau bagaimanapun, terdapat cara lain untuk menangkap bingkai pada peranti. Betulkan 1 – Menggunakan Assistive Touch Ambil tangkapan skrin menggunakan ciri Assistive Touch. Langkah 1 – Pergi ke tetapan telefon anda. Langkah 2 – Seterusnya, ketik untuk membuka tetapan Kebolehcapaian. Langkah 3 – Buka tetapan Sentuh. Langkah 4 – Seterusnya, buka tetapan Assistive Touch. Langkah 5 – Hidupkan Sentuhan Bantu pada telefon anda. Langkah 6 – Buka “Sesuaikan Menu Teratas” untuk mengaksesnya. Langkah 7 – Sekarang anda hanya perlu memautkan mana-mana fungsi ini ke tangkapan skrin anda. Jadi klik pada yang pertama

Tangkapan skrin ialah ciri yang sangat biasa pada komputer yang memudahkan untuk menangkap dan berkongsi apa yang ada pada skrin anda. Terdapat banyak cara untuk mengambil tangkapan skrin pada komputer. Sekarang, mari perkenalkan kaedah tangkapan skrin yang biasa digunakan pada komputer riba Lenovo ThinkPad X13. Pengenalan kaedah tangkapan skrin Lenovo ThinkPad X13 Mengenai kaedah tangkapan skrin pada komputer, terdapat banyak pilihan yang tersedia. Di sini, kami akan menumpukan pada kaedah mengambil tangkapan skrin dengan kekunci pintasan ThinkPad X13 dan mengambil tangkapan skrin dengan perisian arus perdana. ThinkPadX13 menyediakan fungsi tangkapan skrin kekunci pintasan mudah. Anda hanya perlu menekan kekunci Fn dan kekunci PrtSc untuk menyimpan tangkapan skrin kandungan skrin semasa ke papan keratan. Selepas itu anda boleh membuka mana-mana perisian penyuntingan gambar seperti Paint

Bagaimana untuk menghantar tangkapan skrin Mac ke WeChat? Mula-mula, cari pad pelancaran pada desktop, bukanya, cari WeChat, kemudian klik WeChat untuk log masuk, dan akhirnya masukkan tetingkap tetapan kekunci pintasan dalam pilihan pop timbul. Cara menghantar tangkapan skrin Mac ke WeChat 1. Cari pad pelancaran pada desktop. 2. Kemudian cari WeChat. 3. Klik untuk log masuk ke WeChat. 4. Selepas log masuk, cari pilihan WeChat di sudut kiri atas halaman komputer dan bukanya. 5. Kemudian pergi ke pilihan tetapan keutamaan dalam menu pop timbul untuk memasuki tetingkap tetapan pintasan Akhir sekali, cari fungsi tangkapan skrin dalam halaman tetapan kekunci pintasan dan tetapkan kekunci.

Bagaimana untuk menggunakan kekunci pintasan untuk mengambil tangkapan skrin dalam Win8? Dalam penggunaan komputer harian kita, kita selalunya perlu mengambil tangkapan skrin kandungan pada skrin. Bagi pengguna sistem Windows 8, mengambil tangkapan skrin melalui kekunci pintasan adalah kaedah operasi yang mudah dan cekap. Dalam artikel ini, kami akan memperkenalkan beberapa kekunci pintasan yang biasa digunakan untuk mengambil tangkapan skrin dalam sistem Windows 8 untuk membantu anda mengambil tangkapan skrin dengan lebih cepat. Kaedah pertama ialah menggunakan kombinasi kekunci "Win key + PrintScreen key" untuk melaksanakan sepenuhnya

Honor Magic5Pro dilengkapi dengan sistem pengendalian MagicOS7.1, yang beroperasi dengan sangat lancar. Jadi, bagaimana untuk mengambil tangkapan skrin pada Magic5Pro? Artikel ini akan memberikan anda tutorial tangkapan skrin satu klik yang terperinci. Tutorial tangkapan skrin Honor Magic5Pro menyokong tangkapan skrin standard, tangkapan skrin separa dan tangkapan skrin panjang. Begini cara untuk mengambil tangkapan skrin: Leret ke bawah pada tepi atas skrin telefon anda untuk membuka Pusat Kawalan. Cari ikon tangkapan skrin di pusat kawalan dan klik padanya untuk mengambil tangkapan skrin dengan cepat. Selain itu, anda juga boleh menekan [Volume -] dan [Butang Kuasa] pada masa yang sama untuk mengambil tangkapan skrin Jika anda perlu mengambil tangkapan skrin separa atau panjang, anda perlu mengklik segi tiga terbalik di sudut kanan bawah ikon tangkapan skrin. Setelah diklik, ia akan memaparkan [Bureau

Baru-baru ini, permainan aksi-pengembaraan "Starblade" telah mengeluarkan paparan utama baharu, dengan heroin Hawa, Lily dan Adam muncul. Kisah "Star Blade" bermula dengan saat pahlawan Hawa tiba dari koloni makhluk asing Dia diperintahkan untuk datang ke Bumi untuk mengalahkan Netiba, musuh lama manusia yang tiba-tiba muncul. Netiba nampaknya menyerang manusia atas arahan daripada jenis unggulnya, terdiri daripada Alphas dan Elders. Dalam dunia yang musnah, protagonis Eve bertemu Adam, seorang yang terselamat yang tinggal di Bumi, dan Lily, bekas ahli Pasukan Soar. Mereka bertarung sebelah menyebelah menentang Netiba. Permainan ini akan dikeluarkan pada 26 April untuk PS5. Ia dijangka akan dikeluarkan pada PC pada masa akan datang.
