vue-video-player を使用してライブ放送を実現する方法

vue-video-player を使用してライブ放送を実現する方法

授業前の準備: ライブストリーミングプロトコル https://www.cnblogs.com/yangchin9/p/14930874.html

概要: H5ページでライブ放送+ビデオ再生を視聴します。開発中はvideo.jsやmui-playerなどのプラグインを使用していましたが、これらのビデオプラグインはモバイル互換性に適していないことがわかりました。最終的に、モバイル端末との互換性が良いプラグインvue-video-playerを見つけました。

シナリオ:

モバイル H5 ページ、プロジェクトは vue で構築され、HLS プロトコルを使用し、m3u8 ライブ ストリームで終了します。

1. vue-video-playerをインストールする

HLS ビデオ ストリームを再生するには、videojs-contrib-hls プラグインをインストールする必要があります。RTMP ビデオ ストリームを再生するには、videojs-flash プラグインをインストールする必要があります。hls プラグインと flash プラグインを同時に使用する場合は、hls プラグインの前に flash プラグインを導入する必要があります。(ドキュメントでは、vue-video-player をインストールすると hls プラグインが自動的にインストールされると書かれていますが、実際には動作していないため、手動でインストールする必要があります。)

インストール方法1:

CDN メソッドでは、HTML ファイル ヘッダーにファイルを直接導入します。
  <link rel="スタイルシート" href="path/to/video.js/dist/video-js.css"/>
  <script type="text/javascript" src="video.min.js へのパス"></script>
  <script type="text/javascript" src="vue.min.js へのパス"></script>
  <script type="text/javascript" src="vue-video-player.js へのパス">
  </スクリプト>
    <script type="text/javascript"> Vue.use(window.VueVideoPlayer)
  </スクリプト>

インストール方法2:

コードを表示するにはクリックしてください

NMP インストール プラグイン:
  npm インストール vue-video-player --save
    npm をインストール videojs-contrib-hls --save

main.js に基本的なスタイル ファイルを導入します。
// videoPlayer スタイルをインポートします import 'video.js/dist/video-js.css'
    

オンデマンドインポート:
'videojs-contrib-hls' をインポートします
'vue-video-player' から { videoPlayer } をインポートします。

コンポーネント:
    ビデオプレーヤー
},    
 
グローバルインポート:
'vue' から Vue をインポートします
'vue-video-player' から VueVideoPlayer をインポートします。 
// カスタムスタイルをインポートし、<video-player> に対応するクラス名を追加します (例: video-player-custom)
// 'vue-video-player/src/custom-theme.css' をインポートします
Vue.use(VueVideoPlayer, /* { 
 オプション: グローバルデフォルト設定、
   イベント: グローバル videojs イベント}*/)

2. vue-video-playerを使用する

<テンプレート>
  <!-- playsinline: モバイルデバイスでプレーヤーを全画面表示しないように設定します [ ブール値、デフォルト: false ] -->
  <!-- customEventName: カスタム状態変更イベント名 [文字列、デフォルト: 'statechanged'] -->
    <ビデオプレーヤー
    クラス="ビデオプレーヤーカスタム"
        ref="ビデオプレーヤー"
        :options="プレイヤーオプション"
        :playsinline="true"
        customEventName="カスタム状態変更イベント名"
        @play="onPlayerPlay"
        @pause="プレイヤー一時停止中"
        @ended="プレイヤー終了時"
        @ready="プレイヤーの準備完了"
        @statechanged="プレイヤーの状態が変更されました"
        @playing="onPlayerPlaying"
        @waiting="プレイヤー待機中"
        @loadeddata="プレーヤーに読み込まれたデータ"
        @timeupdate="時間更新"
        @canplay="onPlayerCanplay"
        @canplaythrough="onPlayerCanplaythrough">
    </ビデオプレーヤー>
</テンプレート>
<スクリプト>
'videojs-contrib-hls' をインポートします
'vue-video-player' から { videoPlayer } をインポートします。
エクスポートデフォルト{
   コンポーネント:
        ビデオプレーヤー
    },
  データ() { 
    戻る {
       プレイヤーオプション: { 
         // ミュートされているか: true、
                  // デフォルトは英語ですが、中国語に設定すると「zh-CN」になります。
                  // 再生速度。指定すると、Video.js はコントロール (vjs-playback-rate クラスのコントロール) を表示し、ユーザーが再生速度を選択できるようにします。playbackRates: [0.5, 1.0, 1.5, 2.0],
                  // プレーヤーをスムーズモードにし、プレーヤーの動的サイズを計算するときにこの値を使用して、アスペクト比を示します。aspectRatio: '4:3'、
             // 互換性の順序、デフォルト値は ['html5'] です。他の登録済みテクノロジは、登録された順序でこのテクノロジの後に追加されます。
                  技術オーダー: ['html5'],
                  // ネイティブの <video> タグ内の <source> サブタグのセットと同等で、グレースフル デグラデーションを実現できます。type 属性はメディア リソース ソースの MIME タイプを指定します: [
                        //{
                    	  //タイプ: "video/mp4",
                    	  //ソース: ""
                  	//,
                        //{
                    	  //タイプ: "rtmp/flv",
                    	  //ソース: ""
                  	//,
                   	{
                     	  タイプ: "application/x-mpegURL",
                     	  ソース: "https://live.cgtn.com/1000/prog_index.m3u8"
                   	},
                   ]、
                  // ビデオカバーポスター: require('./icon/cover.jpg'), 
      }
    }
  },
  計算: { 
    	//プラグインノードはカスタムボタンイベントを追加するために使用されます player() { 
      これを返します。$refs.videoPlayer.player 
    }
  },
    マウント() {},
    メソッド: {
        // 再生コールバック onPlayerPlay(player) {
        },
        // 一時停止コールバック onPlayerPause(player) {
          //console.log(プレイヤー)
        },
        //ビデオ再生終了コールバック onPlayerEnded(player) {
          //console.log(プレイヤー)
        },
        // DOM要素のreadyStateが変更されると再生が停止します onPlayerWaiting(player) {
          //console.log(プレイヤー)
        },
        // 再生が開始されました callback onPlayerPlaying(player) {
          //console.log(プレイヤー)
        },
        // プレーヤーが現在の再生位置でデータをダウンロードすると、onPlayerLoadeddata($event) がトリガーされます {
          //コンソール.log($イベント)
        },
        // 現在の再生位置が変更されたときにトリガーされます。
        プレイヤータイム更新($event) {
          //コンソール.log($イベント)
        },
        //メディアのreadyStateがHAVE_FUTURE_DATA以上である onPlayerCanplay($event) {
          //コンソール.log($イベント)
        },
        // メディアの readyState は HAVE_ENOUGH_DATA 以上です。つまり、メディア ファイル全体をバッファリングなしで再生できます。
        プレイヤーがプレイスルーできるかどうか($event) {
          //コンソール.log($イベント)
        },
        //再生ステータス変更コールバック playerStateChanged($event) {
          //コンソール.log($イベント)
        },
        // リスナーをコンポーネントの準備完了状態にバインドします。イベント リスナーとの違いは、準備完了イベントがすでに発生している場合は、関数がすぐにトリガーされることです。 。
        プレイヤーが準備完了($event) {
          //コンソール.log($イベント)
        },
    }
}
</スクリプト>
<style lang="scss" スコープ>
.ビデオプレーヤーカスタム{
    幅: 100%;
    高さ: 180ピクセル;
    // vidoeUI は /deep/ .video-js{ を書き換えます
        幅: 100%;
        高さ: 100%;
        パディング: 0;
        オーバーフロー: 非表示;
        // player.vjs-tech{
          オブジェクトフィット: カバー;
        }
        // 再生ボタン.vjs-big-play-button {
            位置: 絶対;
            上位: 50%;
            左: 50%;
            幅: 2em;
            高さ: 2em;
            上マージン: -1em;
            左マージン: -1em;
            フォントサイズ: 2em;
            行の高さ: 2em;
            境界線の半径: 50%;
            背景色: rgba(0,0,0,0.45);
            アウトライン: なし;
        }
        // Cover.vjs-poster{
            幅: 100%;
            高さ: 100%;
            背景サイズ: カバー;
        }
    }
}  
</スタイル>

vue-video-player を使用してライブ ブロードキャストを実現する方法については、これで終わりです。vue-video-player ライブ ブロードキャストに関する関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue-video-player でのブレークポイント再開の実装
  • vue video と vue-video-player を使用してビデオを広める方法のチュートリアル
  • vue-video-player を vue のビデオプラグインとして使用する詳細な説明
  • vue-video-player ビデオプレーヤーの詳細設定
  • vue でビデオプラグイン vue-video-player を使用する例
  • vue ビデオ再生用の vue-video-player プラグインの使用方法
  • vue-video-player の使用感の詳しい説明(m3u8 対応)
  • m3u8 ビデオ ストリームを再生する vue-video-player の実装

<<:  純粋なCSS3で実装されたネオンライト効果

>>:  HTML 代替カラーコードを実現する n 通りの方法 サンプルコード

推薦する

Mysql を 5.7 にアップグレードした後のグループ クエリの問題を解決する

問題を見つける最近MySQLをMySQL 5.7にアップグレードした後、次のようなクエリでグループ化...

iframe タグの使用方法の詳細な説明 (属性、透明度、適応高さ)

1. iframe の定義と使用法iframe 要素は、別のドキュメントを含むインライン フレーム...

MySQLデータベースイベントスケジュール実行タスクの詳細な説明

1. 背景プロジェクトの業務が進むにつれて、データベース テーブルの数がどんどん大きくなり、ハードデ...

docker-maven-pluginはイメージをパッケージ化し、プライベートウェアハウスにアップロードします。

目次1. docker-maven-pluginの紹介2. 環境とソフトウェアの準備3. デモ例3....

Windows での MySQL のダウンロード、インストール、設定、使用に関するチュートリアル

MySQLの概要MySQL はリレーショナル データベース管理システムです。データベースは構造化され...

小さな画面のモバイルデバイス向けにWebページを設計する際に注意すべきこと

その理由は、このタイプの Web ページが WAP と呼ばれるワイヤレス プロトコルから生成されたた...

CSS3で線形グラデーションを実装するためのコードの詳細な説明

序文デモでは古いバージョンのブラウザのグラデーションが実装されています[IE9-]。 IE9 より前...

Windows 10 での mysql-8.0.17-winx64 のインストール方法

1.公式サイトからダウンロードして解凍する参考: ダウンロード後、zip 圧縮ファイル (mysql...

VUE無限レベルツリーデータ構造表示の実装

目次コンポーネントの再帰呼び出しレンダリングメソッドの使用プロジェクトに取り組んでいると、左側のメニ...

JavaScript/TypeScript で同時リクエスト制御を実装するためのサンプルコード

シナリオリクエストが 10 件あるが、同時リクエストの最大数は 5 件で、リクエスト結果が必要である...

MySQL8 ベースの docker-compose デプロイメント プロジェクトの実装

1. まず、次のパスに従って対応するフォルダを作成します。 ローカルのdockerでmysqlを実行...

sshとは何ですか?使い方は?どのような誤解があるのでしょうか?

目次序文SSHとは何かssh は何に使用されますか? sshの使い方ssh 再修正要約する序文ssh...

vue+element カスタムクエリコンポーネント

この記事では主に Vue プロジェクトを紹介します。要素の導入を前提として、コンポーネントを 2 回...

MySQLの最適化の詳細な分析とパフォーマンス

導入データベースを使用したことがある人なら、機能面での like 記号と = 記号の類似点と相違点を...

vue-resource インターセプターの使用に関する詳細な説明

序文インターセプター最近のフロントエンド フレームワークでは、インターセプターは基本的に非常に基本的...