ホームページ ウェブフロントエンド H5 チュートリアル Canvasとhtml5を使った動画スクリーンショット機能の実装例

Canvasとhtml5を使った動画スクリーンショット機能の実装例

May 11, 2018 pm 04:20 PM

この間キャンバスの勉強をしていたのですが、ふと動画のスクリーンショットを撮って、その写真を引っ張ってきて絵文字を作る機能を作ろうと思いつきました、はははははは~~
制作方法:
1.に動画を読み込みます。ページ
キャンバスを使用してこのスクリーンショット機能を作成する場合、簡単に操作できるように、まずビデオがページにロードされていることを確認する必要があります。

<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>
ログイン後にコピー

私の記事「HTML5 とビデオ」で、ブラウザーがビデオのプリロードの進行状況とロード イベントのサポートを異なると述べました。これは、ビデオの再生に影響します。ビデオやその他のイベントトリガー。そこでここでは動画を紹介するためにjsを使って動画を構築していきます。
この方法でビデオを導入する場合は、複数のソースを導入できないため、最初にブラウザがビデオ形式をサポートしているかどうかを確認する必要があります。
1.1 ビデオの canPlayType() メソッドを使用して、サポートされている形式を決定します。canPlayType() メソッドは、ビデオの形式を渡す必要があります。共通の値:

video/ogg;
    video/mp4;
    video/webm;
ログイン後にコピー

、またはエンコーダーを含む:

    video/ogg;codecs="theora,vorbis"
    video/mp4;codecs="avc1.4D401E, mp4a.40.2"
    video/webm;codesc="vp8.0, vorbis"
ログイン後にコピー

戻り値: Web ページのサポート レベルを示します。「おそらく」 - サポートされる可能性が最も高い (入力値にエンコーダーがある場合にのみ返されます)。「おそらく」 - サポートされる可能性があります。 string) はサポートされていません。

function videoType(video){

    var returnType=&#39;&#39;;

    if(video.canPlayType(&#39;video/mp4&#39;)==&#39;probably&#39;||video.canPlayType(&#39;video/mp4&#39;)==&#39;maybe&#39;){

      returnType= &#39;mp4&#39;;

    }else if(video.canPlayType(&#39;video/ogg&#39;)==&#39;probably&#39;||video.canPlayType(&#39;video/ogg&#39;)==&#39;maybe&#39;){<br>     
    returnType= &#39;ogg&#39;;    
    <br>   
    }else if(video.canPlayType(&#39;video/webm&#39;)==&#39;probably&#39;||video.canPlayType(&#39;video/webm&#39;)==&#39;maybe&#39;){<br>     
    returnType= &#39;webm&#39;;    <br>   }<br>   return returnType; 

}
ログイン後にコピー

この関数は、ブラウザーがサポートするビデオの形式を決定できます。

1.2 js を使用して video タグを動的に読み込みます
ブラウザのサポートされる形式を決定した後、Chrome を使用しているため、ブラウザは mp4 形式のビデオをサポートし、次に video タグを動的に作成します。

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(&#39;不支持video&#39;)

    }else{

        videoElem.setAttribute(&#39;src&#39;,"text."+vtype);
    }
}
ログイン後にコピー

ここでスクリーンショット機能を作成したいので、単純なビデオにはスクリーンショットインターフェイスがありません。そのため、それをキャンバスにコピーして、キャンバス上でビデオを再生する必要があるため、ここでは最初にビデオを非表示にします(表示:なし) )。

2. キャンバスを使用してビデオをコピーします
ブラウザ上でビデオが再生されたので、まずキャンバスを作成し、次にキャンバスのコンテキストを取得します。詳細はこちら。キャンバス上にビデオを描画する方法。ここでは関数を使用する必要があります。 drawImage関数の使い方
1.drawImage(img,x,y): キャンバスの位置(x,y)にimgを描画します

2.drawImage(img,x,y,width,height):描画します。キャンバス上の画像 (x, y) で幅と高さの画像を描画します

3.drawImage(img,sx,sy,swidth,sheight,x,y,width,height): (x,y); Canvas ) の位置に、img の幅と高さのスクリーンショットを (sx, sy) の位置に描画します。キャンバス上に描画するときは、その幅と高さに合わせて拡大縮小する必要があります。

上記はdrawImageの使い方です。この関数は非常に強力です。

スクリーンショットの撮影に戻り、ブラウザ上でキャンバス - contextVideo を作成しました。そして、ここにビデオを描画します:

contextVideo.drawImage(videoElem,0,0);
ログイン後にコピー

すると、キャンバスに画像が描画されていることがわかりますが、ビデオは常に変化しています。したがって、setInterval 関数を使用して、画像を描画するソースとしてビデオを継続的に使用する必要があります。

setInterval(function(){<br>    contextVideo,drawImage(videoElem,0,0);<br>},100)
ログイン後にコピー

ここでの時間間隔の大きさは、ビデオの再生がフリーズするかどうかに影響します。

この時点で、表示のためにビデオをキャンバスに移動しました。次にスクリーンショットを作成します。


3. スクリーンショットを作成して、キャンバス パネルを表示します
ここでは、ページ上に別のキャンバス (contextImg) を描画し、再度drawImage メソッドを使用してスクリーンショットを撮る必要があります。

contextImg.drawImage(canvasVideo,0,0,canvasVideo.width,canvasVideo.height);
ログイン後にコピー

このコードは、最初のキャンバスを 2 番目のキャンバスに描画します。

4. スクリーンショットボタンを作成します
ボタンを作成し、クリックした後、前のステップの関数が呼び出され、スクリーンショットを作成できるようになります。 写真を撮った後、写真を右クリックして保存し、PS にインポートして絵文字パッケージを作成できます。


上記は、canvas と html5 で実装されたビデオ スクリーンショット機能の例の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

Canvasとhtml5を使った動画スクリーンショット機能の実装例

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

See all articles