Heim Web-Frontend H5-Tutorial So implementieren Sie die Video-Screenshot-Funktion mit Canvas und H5

So implementieren Sie die Video-Screenshot-Funktion mit Canvas und H5

Mar 26, 2018 am 11:59 AM
canvas html5 截图

Dieses Mal zeige ich Ihnen, wie Sie die Video-Screenshot-Funktion mit Canvas und h5 implementieren. Was sind die Vorsichtsmaßnahmen für die Implementierung der Video-Screenshot-Funktion mit Canvas und h5 ist ein praktischer Fall.

Ich habe mich in dieser Zeit mit Leinwand beschäftigt, und plötzlich kam mir die Idee, eine Funktion zu entwickeln, mit der Screenshots von Videos gemacht und dann die Bilder gezogen werden können, um Emoticons zu erstellen, hahahahaha~~

Produktionsmethode :

1. Laden Sie das Video auf die Seite

Wenn Sie Canvas zum Erstellen dieser Screenshot-Funktion verwenden, müssen Sie zunächst sicherstellen, dass das Video über eine Funktion verfügt auf der Seite geladen, so dass diese bequem bedient werden kann. Wenn Sie die folgende Methode zum direkten Einbetten des

<video loop controls id="testmp4" width="500" height="400" >    
<source src="test.mp4" type="video/mp4">  
<source src="test.webm" type="video/webm">   
<source src="test.ogg" type="video/ogg">
</video>
Nach dem Login kopieren

Wie in meinem Artikel „HTML5 und Video“ erwähnt, unterstützen Browser den Video-Vorladevorgang und Ladeereignisse unterschiedlich Auswirkungen auf die Videowiedergabe und das Auslösen anderer Ereignisse haben. Hier verwenden wir also js, ​​um Videos zu erstellen und Videos vorzustellen.

Seien Sie vorsichtig, wenn Sie Videos auf diese Weise einführen. Es können nicht mehrere Quellen eingegeben werden. Sie müssen daher zunächst die Unterstützung des Browsers für Videoformate ermitteln.

1.1 Verwenden Sie die canPlayType()-Methode von Video, um das unterstützte Format zu bestimmen

Die canPlayType()-Methode muss einen Parameter übergeben, Dies ist der Parameter des Videoformats.

Gemeinsame Werte: video/ogg;

Video/mp4;

🎜>   video/ogg;codecs="theora,vorbis"

video/mp4;codecs="avc1.4D401E, mp4a.40.2"

video/webm;codesc="vp8.0 , vorbis"

Rückgabewert: Zeigt an die Unterstützungsstufe der Webseite: „wahrscheinlich“ – wird höchstwahrscheinlich unterstützt (wird nur zurückgegeben, wenn der Eingabewert einen Encoder hat) – (Leere

Zeichenfolge

). ) wird nicht unterstützt;

Diese Funktion kann das vom Browser unterstützte Format für Videos ermitteln.

function videoType(video){
    var returnType='';
    if(video.canPlayType('video/mp4')=='probably'||video.canPlayType('video/mp4')=='maybe'){
      returnType= 'mp4';
    }else if(video.canPlayType('video/ogg')=='probably'||video.canPlayType('video/ogg')=='maybe'){<br>     returnType= 'ogg';    <br>   }else if(video.canPlayType('video/webm')=='probably'||video.canPlayType('video/webm')=='maybe'){<br>     returnType= 'webm';    <br>   }<br>   return returnType; 
}
Nach dem Login kopieren

1.2 Verwenden Sie js, um Video-Tags dynamisch zu laden

Nachdem ich die unterstützten Formate des Browsers beurteilt habe, da ich Chrome verwende, habe ich den Browser unterstützt Videos im MP4-Format, und dann erstellen wir dynamisch ein Video-Tag.

Da wir hier eine Screenshot-Funktion erstellen möchten, verfügt ein einfaches Video nicht über eine Screenshot-Schnittstelle, daher müssen wir es auf die Leinwand kopieren und das Video auf der Leinwand abspielen, also haben wir hier zuerst die Video ausblenden (

Anzeige

:keine).
var videoElem;
var videop;
function createVideo(){
     videoElem=document.createElement("video");//创建video
     videop=document.getElementById("videopanel");//获取video的外层容器
     videop.appendChild(videoElem);
     var vtype=videoType(videoElem);//判断浏览器支持的格式
     if(vtype==""){
        videop.innerHtml('不支持video')
    }else{
        videoElem.setAttribute('src',"text."+vtype);
    }
}
Nach dem Login kopieren

2. Verwenden Sie Canvas, um das Video zu kopieren

Da das Video nun im Browser abgespielt wurde, kopieren wir es auf Canvas. Erstellen Sie zuerst die Leinwand und rufen Sie dann den Leinwandkontext ab, auf den ich nicht näher eingehen werde. Um ein Video auf Leinwand zu zeichnen, müssen wir hier eine Funktion verwenden. Verwendung der Funktion „drawImage“ 1.drawImage(img,x,y): Zeichnen Sie ein Bild an der Position (x,y) der Leinwand

2.drawImage(img,x, y, Breite, Höhe): Zeichnen Sie ein Bild mit Breite, Breite und Höhe an der (x, y)-Position der Leinwand; , Breite, Höhe): Zeichnen Sie einen Screenshot der Breite und Höhe des Bildes an der (sx, sy)-Position der Leinwand an der (x, y)-Position. Das Bild muss beim Zeichnen auf die Breite und Höhe skaliert werden die Leinwand.

Das Obige ist die Verwendung von drawImage. Diese Funktion ist sehr leistungsfähig.

Zurück zum Aufnehmen von Screenshots, wir haben jetzt das Canvas-Context-Video im Browser erstellt und dann zeichnen wir das Video hier:

Dann können wir sehen, dass ein Bild in das gezeichnet wird Leinwand, aber das Video ändert sich ständig, daher müssen wir die Funktion setInterval verwenden, um das Bild kontinuierlich mit dem Video als Quelle zu zeichnen.

Die Größe des Zeitintervalls hier beeinflusst, ob die Videowiedergabe einfriert. ​

contextVideo.drawImage(videoElem,0,0);
Nach dem Login kopieren
Zu diesem Zeitpunkt haben wir das Video zur Anzeige auf die Leinwand verschoben. Machen Sie als nächstes einen Screenshot.

setInterval(function(){<br>    contextVideo,drawImage(videoElem,0,0);<br>},100)
Nach dem Login kopieren

3. Machen Sie einen Screenshot, um das Canvas-Panel anzuzeigen

Hier müssen wir eine weitere Canvas auf der Seite zeichnen – contextImg, und dann verwenden drawImage again Methode, Screenshot.

contextImg.drawImage(canvasVideo,0,0,canvasVideo.width,canvasVideo.height);
Nach dem Login kopieren

这段代码将第一个canvas画到了第二个canvas上。

4.制作截图按钮

制作一个按钮,然后绑定click事件,点击后就调用上一步的函数,这样就可以制作一个截图了。

当图截好后可以将图右键保存下来,然后倒入ps制作表情包了。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

分页查询的使用详解

JS的日期相关函数使用详解

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Video-Screenshot-Funktion mit Canvas und H5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles