Unity3d C# は、ローカル Web ページを使用して EZVIZ クラウド モニタリング ビデオ ストリーム (ezopen) をすばやく開き、PTZ、サウンドなどの制御を実現し、WebGL プラットフォームをサポートし、UMP 再生 (ソース コードを含む) を置き換えます。

序文

以前、Universal?Media?PlayerUMPの代わりにShiyun監視ビデオストリームを再生する機能(ezopen)を紹介しましたが、iframeの機能はShiyunが提供する再生Webページを開く機能で、基本的には画質切り替え、音声切り替えなどの機能のみです。 .; 詳細を段階的に確認できます (https://blog.csdn.net/qq_33789001/article/details/132025298)。この記事の機能は、引き続き Windows および macOS の 3D WebView (Web Browser)? プラグインをベースにしており、EZUIKit プラグインを使用してパンチルト コントロール (パンチルトをサポートするデバイス) 機能を実現しています。

効果

WebGL のサポート:
ここに画像の説明を挿入

PTZ サポート:

ここに画像の説明を挿入

機能実現

作者が使用したプラグイン:
LitJson は、ネットワーク リクエストの json を生成/解析するために使用されます。
DOTweenPro は、単純なウィンドウのポップアップと閉じるアニメーションを作成するために使用されます。Windows
および macOS 用の 3D WebView (Web ブラウザー) は、Web ページを開くために使用されます (使用説明書 (https://blog.csdn.net/qq_33789001/article/details) /126180804)) プラグイン (要件に応じて埋め込みブラウザも使用可能)、WebGL プラットフォームには 2D WebView for WebGL (Web Browser IFrame) プラグインが必要です。
accessToken を取得します。管理者アカウントは、appKey とシークレットに従って accessToken を取得します。監視ビデオ ストリームの取得などの基本的な機能については、再度説明しません。序文の記事を参照してください。

ローカル Web ページを開く方法は次のとおりです。

string url = "streaming-assets://CamLocalWebPlay/WebPlayCamVideo.html?url=" + path + "&token=" + YsAccessTokenMgr.instance.AT;
canvasWebView.WebView.LoadUrl(url);

stream-assets:// は、ファイルのパスが Unity3d の StreamingAssets フォルダーの下にあることを示します。

メソッド 1 のローカル iframe

動画埋め込み再生方法、詳しくはhttps://open.ys7.com/bbs/article/20をご参照ください。これはローカル Web ページなので、最初にコードを貼り付けます。

<!DOCTYPE html>
<html lang="en-us">
<head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>本地网页监控播放</title>

    <style>
        html, body, iframe {
      
      
            height: 100%;
            width: 100%;
            overflow: hidden;
            margin: 0;
            padding: 0;
        }
        #wrap {
      
      
            width: 100%;
            height: 100%;
        }

        iframe {
      
      
            border: none;
        }

    </style>
  <body onload="document.documentElement.webkitRequestFullScreen();">
      <div id="wrap">
          <iframe id="videoframe">
          </iframe>
      </div>
    <script>
        function getUrlParam(key) {
      
      
            const search = window.location.search.substring(1);
            const paramsArray = search.split("&");
            let value = null;
            paramsArray.forEach((param) => {
      
      
                const [paramKey, paramValue] = param.split("=");
                if (key === paramKey) {
      
      
                    value = paramValue;
                }
            });
            return value;
        }
        var iframe = document.getElementById("videoframe");
        iframe.src = "https://open.ys7.com/ezopen/h5/iframe_se?url=" + getUrlParam("url") 
            + "&autoplay=1&audio=0&accessToken=" + getUrlParam("token") ;
    </script>
  </body>
</html>

ここでは、入力されたURLとトークンに応じてiframe_seのパラメータが生成され、正常に再生できるようになります。

方法 1 ローカル EZUIKit

EZUIKit プラグインは、アクセスの難しさを軽減し、カスタム UI に適応し、主流のフレームワーク (低遅延プレビュー、クラウド ストレージ再生、SD カード再生) に適応する公式プラグインです。再生制御、オーディオ制御、ビデオスクリーンショット、リアルタイムビデオOSDTime取得、ビデオ録画、デバイスインターコム、電子ズーム、フルスクリーンなどの豊富な機能API。
使い方も比較的簡単です:
DOM を作成します。

  <div id="video-container"></div>

ライブブロードキャスト

var player = new EZUIKit.EZUIKitPlayer({
    
    
  id: 'video-container', // 视频容器ID
  accessToken: 'at.3bvmj4ycamlgdwgw1ig1jruma0wpohl6-48zifyb39c-13t5am6-yukyi86mz',
  url: 'ezopen://open.ys7.com/G39444019/1.live',
  width: 600,
  height: 400,
})

再生 再生

    var player = new EZUIKit.EZUIKitPlayer({
    
    
      id: 'video-container', // 视频容器ID
      width: 600,
      height: 400,
      accessToken: 'at.3bvmj4ycamlgdwgw1ig1jruma0wpohl6-48zifyb39c-13t5am6-yukyi86mz',
      url: 'ezopen://open.ys7.com/G39444019/1.rec'
})

これを使用するには、まずコード ウェアハウスを git し、EZUIKit-JavaScript-npm/demos/base-demo/ezuikit_static/ フォルダーを関数インポート スクリプトに配置する必要があります

 <script src="./ezuikit.js"></script>

要素が 1 つだけある非常に単純な Web ページを作成する

<div id="video-container"></div>  

そして、EZUIKit.EZUIKitPlayer 関数を使用して初期化します。

var player = new EZUIKit.EZUIKitPlayer({
    
    
      id: 'video-container', // 视频容器ID
      accessToken: 'at.3bvmj4ycamlgdwgw1ig1jruma0wpohl6-48zifyb39c-13t5am6-yukyi86mz',
      url: 'ezopen://open.ys7.com/203751922/1.live',
    })

ここで重要なのは、以前に EZVIZ のバックグラウンドを通じて取得した URL と accessToken の値を渡すことです。

テンプレートは次のように設定できます。

テンプレート // シンプル - ミニマリスト バージョン; 標準 - 標準バージョン; セキュリティ - セキュリティ バージョン (プレビュー再生); 音声 - 音声バージョン; テーマ
- 設定可能なテーマ;

筆者が試してみたところ、有効となるのは標準版とテーマ設定可能なテーマのみで、それ以外は白い画面効果であることが分かった。
標準-標準エディション:
ここに画像の説明を挿入

テーマ - 構成可能なテーマ:
ここに画像の説明を挿入

PTZ コントロール ボタンをクリックして、PTZ のコントロール パネルを表示します。

ここに画像の説明を挿入

ボタンをカスタマイズして再生を制御することもできます。

再生終了: player.stop() サウンドをオンにする: player.openSound()
サウンドを閉じる: player.closeSound()
録音開始: player.startSave()
録音終了: player.stopSave()
ビデオキャプチャ: player.capturePicture()
Full画面(モバイル端末とPC端末の全画面に自動適応):player.fullScreen()
全画面解除:player.cancelFullScreen()
再生時間取得 Callback:player.getOSDTime()
インターコム開始:player.startTalk()
終了インターコム: player.stopTalk( )

プロジェクトのソースコード

完全なプロジェクトのソース コード: https://download.csdn.net/download/qq_33789001/88135255
監査に合格していないため、開くことができません。

プロジェクトの後で、プロジェクトの Main.unity シーンを開き、FunNodes>YsAccessTokenMgr ノードを選択して独自の appKey と appSecret を設定します。
ここに画像の説明を挿入

Icon_Camera を選択して、ビデオ タグの deviceSerial と channelNo の情報を変更します。
ここに画像の説明を挿入

情報が同じアカウントにあることを確認してください。実行後、ビデオ アイコンをクリックして再生効果を確認してください。

おすすめ

転載: blog.csdn.net/qq_33789001/article/details/132191506