@[toc] 注: "vue": "^2.6.11", "ビデオ.js": "^7.10.2", "videojs-contrib-hls": "^5.15.0", "mux.js": "^5.7.0" 1. インストール糸ビデオ.jsを追加します yarn add videojs-contrib-hls // これはhlsストリームを再生するために必要なプラグインです yarn add mux.js // vueプロジェクトでは、インストールされていない場合はエラーが発生する可能性があります 2. videojsの紹介1. src フォルダーの下に plugins フォルダーを作成し、video.js ファイルを作成します。 video.js ファイルの内容は次のとおりです。 import "video.js/dist/video-js.css"; // video.js の CSS をインポートします import hls from "videojs-contrib-hls"; // hls ストリームを再生するにはプラグインが必要です import Vue from "vue"; Vue.js の hls 関数 2. 先ほどのvideo.jsファイルをmain.jsにインポートします。 import "./plugins/video.js"; // 定義したばかりの video.js ファイルをインポートします 3. コンポーネントでのテストと使用1. 基本的な自動再生を実装するTest.vue ファイル <テンプレート> <div class="test-videojs"> <video id="videoPlayer" class="video-js" ミュート済み></video> </div> </テンプレート> <スクリプト> import Videojs from "video.js"; // Videojsをインポート エクスポートデフォルト{ データ() { 戻る { // https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8 はビデオです。cctv1 (ライブ ブロードキャストで巻き戻しできません) をこれに置き換えると、早送りと巻き戻しの効果を確認できます。nowPlayVideoUrl: "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8" }; }, マウント() { this.initVideo(this.nowPlayVideoUrl); }, メソッド: { initVideo(nowPlayVideoUrl) { // これらのオプション属性はビデオタグに直接設定することもできます。muted を参照してください。 オプション = { autoplay: true, // 自動再生を設定する controls: true, // 再生コントロールを表示する source: [ // src がオプションとして設定されている場合、チャンネル切り替えは実行できないことに注意してください (nowPlayVideoUrl が監視されている場合でも) { src: nowPlayVideoUrl、 type: "application/x-mpegURL" // videojs にこれが HLS ストリームであることを伝えます} ] }; // videojsの最初のパラメータはドキュメント内のビデオのIDを表します const myPlayer = Videojs("videoPlayer", オプション, 関数 onPlayerReady() { console.log("this in onPlayerReady refers to:", this); // this はここで、Videojs によって作成されたインスタンスである Player を参照します console.log(myPlyer === this); // これは true を返します }); } } }; </スクリプト> <スタイル lang="scss"> #ビデオプレーヤー{ 幅: 500ピクセル; 高さ: 300px; マージン: 50px 自動; } </スタイル> ビデオ再生効果は以下のようになります。 印刷結果は以下のようになります。 2. チャンネル切り替えを実現するTest.vue ファイル <テンプレート> <div class="test-videojs"> <ビデオ id="videoPlayer" クラス="video-js"></ビデオ> <el-button type="danger" @click="changeSource">CCTV3 に切り替える</el-button> </div> </テンプレート> <スクリプト> import Videojs from "video.js"; // Videojsをインポート エクスポートデフォルト{ データ() { 戻る { nowPlayVideoUrl: "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8", オプション: autoplay: true, // 自動再生を設定します muted: true, // 自動再生を実現するには true に設定し、ビデオはミュートされます (Chrome 66 以降では、オーディオとビデオの自動再生が禁止されています) preload: "auto", // プリロードコントロール: true // 再生コントロールを表示する}, プレイヤー:null }; }, マウント() { this.getVideo(this.nowPlayVideoUrl); }, メソッド: { getVideo(nowPlayVideoUrl) { this.player = Videojs("videoPlayer"、 this.options); //キーコード、チャンネル切り替え操作を実装するためにsrcを動的に設定するthis.player.src([ { src: nowPlayVideoUrl、 type: "application/x-mpegURL" // videojs にこれが HLS ストリームであることを伝えます} ]); }, ソースの変更(){ this.nowPlayVideoUrl = "http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8"; console.log(this.nowPlayVideoUrl, "変更されました"); } }, 時計: nowPlayVideoUrl(新しい値、古い値) { this.getVideo(新しいVal); } }, 破棄する前に() { if (this.player) { this.player.dispose(); // プレーヤーを削除します。このメソッドは、videojs の内部状態をリセットし、dom を削除します。 } } }; </スクリプト> <スタイル lang="scss"> #ビデオプレーヤー{ 幅: 500ピクセル; 高さ: 300px; マージン: 50px 自動; } </スタイル> ビデオ切り替え効果は以下のようになります。 4. 落とし穴に関する注意1. ビデオが自動的に再生されないか、エラーメッセージが表示されます: DOMException: play() が失敗しました解決するにはミュート属性を使用する必要があります エラー メッセージ: DOMException: ユーザーが最初にドキュメントを操作しなかったため、play() が失敗しました。(ユーザーがまだ操作していないため、play を呼び出すことはできません) 解決策: mutedプロパティをtrueに設定する <video id="videoPlayer" class="video-js" ミュート済み></video> ミュート属性について:
2. チャンネルを変更すると、URLは正常に変更されましたが、ビデオは以前と同じままですこれを実現するにはsrcを動的に設定する必要があります // 動的にsrcを設定 this.player.src([ { src: nowPlayVideoUrl、 type: "application/x-mpegURL" // videojs にこれが HLS ストリームであることを伝えます} ]); 3. mux.jsモジュールが見つからないエラー情報: * mux.js/lib/tools/parse-sidx in ./node_modules/video.js/dist/video.es.js インストールするには、次を実行します: npm install --save mux.js/lib/tools/parse-sidx 解決策: mux.jsをインストールする 糸を追加 mux.js 5. rtmpストリームを再生するrtmp ストリームを再生する操作は、hls ストリームを再生する操作とほぼ同じですが、次の点が異なります。 import "videojs-flash"; // rtmp ストリームを再生するために必要なプラグイン type: 'rtmp/flv', // このタイプの値は、これが rtmp ストリーム ビデオであることを videojs に伝えるために必要です 上記は、vue で video.js を使用して m3u8 形式のビデオを再生する方法の詳細です。vue で videojs を使用して m3u8 形式のビデオを再生する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: MySQL 5.7.11 zip インストールと設定方法のグラフィックチュートリアル
>>: Nginxを使ってサーバー内で複数コンテナの共存を実現する方法
関数の起源最近、水平スクロール バーを必要とする H5 に取り組んでいました。いくつかのドキュメント...
1. テストテーブルを作成する テーブル `testsign` を作成します ( `userid`...
ページめくりの問題のシナリオBとCは同じページ(表と裏)にありますページをめくって A をカバーした...
HTML についてどれくらい知っていますか? 現在、基本的な HTML コードを学習している場合は、...
序文Linux 環境で作業するエンジニアは、これらの面倒な命令とパラメータのコマンドラインにきっと驚...
序文デフォルトでは、Nginx ログはファイルに書き込まれます。各ドメインのログを区別するために、通...
1. レンダリングを見る進むを選択: 後方を選択: コードは次のとおりです(例): <テンプレ...
CentOS 8にDockerをインストールする公式ドキュメント: https://docs.doc...
遭遇した落とし穴私は午後中ずっと、uni-app で scss を使用する際の落とし穴を解決すること...
VMWare (Virtual Machine ware) は、「仮想 PC」ソフトウェア会社です。...
目次1. はじめに2. 初期ビュー(I) Vueの概念を理解する(II) MVVMアーキテクチャ(I...
背景nginx サーバー モジュールは 2 つのサーバーにプロキシする必要があるため、異なるサーバー...
MySQL 8.0.16 以降では、パスワードの有効期限ポリシーを設定できます。今日は、この小さな知...
JS アニメーションの代わりに CSS アニメーションを使用する必要があるのはなぜですか? Java...
ウェブサイトでは、コンテンツの(100-1)%がナビゲーションです1. ジェシー・ジェームズ・ギャレ...