今回は<video>タグで実装した動画をクライアント側でダウンロードできないようにする方法について書いていこうと思います。
<video>タグの基本的な使用方法と属性
<video controls>
<source src=" video.mp4" type="video/mp4">
対応するブラウザでお試しください。
</video>
<video>タグの中に実際の動画を<source>タグの中に記載して、動画に対応していないブラウザのために注意文言を書くような使い方になります。(現在で最新の一般的なブラウザではほとんどサポートされていますので、そこまで気にすることもありません。)
「controlslist属性」を利用してダウンロードできないようにする
ここから本題になります。<video>タグには様々な属性を利用することができ、その中の「controlslist属性」を利用してダウンロードを禁止します。
https://developer.mozilla.org/ja/docs/Web/HTML/Element/video
controlslist
属性が指定されていると、ブラウザー自身のコントロールのセットを表示する場合 (例えばcontrols
属性が設定されている場合)、メディア要素に表示するコントロールを選択するのを補助します。
以下は<video>タグの詳細な情報になりますので、詳細は以下をご覧ください。
<video controls controlsList="nodownload">
<source src="video.mp4" type="video/mp4">
対応するブラウザでお試しください。
</video>
以上のように「controlsList=”nodownload”」を埋め込むだけでダウンロードできないようにすることが可能です。
右クリックも考慮する方法
上記の属性を追加するだけでダウンロードのボタンを非表示することは可能です。しかし、PCで右クリックやスマホで長押しするとダウンロードが簡単にできてしまいます。
windows.oncontextmenuを使用して右クリックを制御する
上記の問題を解決するために、JavaScriptを使用して、右クリックを制御することでダウンロードを制御します。
document.oncontextmenu = function () {
return false;
};
本来の使い方は上記の通りですが、結局、関数の省略を利用して以下の書き方で完結します。
<video controls controlsList="nodownload" oncontextmenu="return false;">
<source src="video.mp4" type="video/mp4">
対応するブラウザでお試しください。
</video>
上記まですると基本はダウンロード不可になります。
サイトによってはサイト全体の右クリックを推奨しているサイトもありますが、よっぽどの希望がない限りそこまでは不要かなと思っています。
動画のダウンロードの処理に困っている方はぜひ参考にしてみてください!