整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          web簡易視頻聊天室+媒體流插入

          web簡易視頻聊天室+媒體流插入

          音聊天室是最近非常熱門的一款語音類軟件,但是編寫一個語音聊天室軟件是不是很困難呢?沒關系,今天為大家帶來簡易版的,非常簡單呦!但是光聊天怎么行,想不想一起在聊天室看視頻,一起吐槽、觀看呢!不要急喲,馬上帶你們一起寫。

          一、項目準備

          需求:web端的多人視頻聊天

          用到的技術:anyRTC的RTC實時音視頻api

          需要使用的RTC - SDK功能

          • 創建RTC音視頻引擎:createClient
          • 創建本地音頻視頻:createMicrophoneAndCameraTracks
          • 加入頻道:join
          • 離開頻道:leave
          • 開啟本地視頻發送:publish
          • 關閉本地視頻發送:unpublish
          • 訂閱拉流:subscribe
          • 取消訂閱:unsubscribe
          • 添加媒體流:addInjectStreamUrl
          • 刪除媒體流:removeInjectStreamUrl

          二、項目開發以及相關js代碼

          下載或引入 anyRTC

          • script導入

          使用 <script> 標簽引入 SDK 時,產生名為ArRTM 的全局變量,該變量含有該模塊的所有成員。

          <script src="https://ardw.anyrtc.io/sdk/web/ArRTC@latest.js"></script> //引入RTC
          
          • npm 導入
          npm install --save ar-rtc-sdk;
          import ArRTC from "ar-rtc-sdk"; //導入RTC項目
          

          加入同一個房間(join)

          html 視頻容器

          <!-- 用戶視頻容器 -->
          <div id="remote-playerlist" class="row video-group"></div>
          

          相關JS(加入房間并渲染自己視圖)

          //創建本地視圖
          const localplayer=$(
          `
             <div class="col-6" id="local_video">
          	 <p id="local-player-name" class="player-name"></p>
          	 <div class="player-with-stats">
          	    <div id="local-player" class="player"></div>
          	    <div id="local-stats" class="stream-stats stats"></div>
          	 </div>
             </div>
          `
          );
          $("#remote-playerlist").append(localplayer);
          // create ArRTC client
          client=await ArRTC.createClient({
          	mode: "rtc",
          	codec: "h264"
          });
          // add event listener to play remote tracks when remote user publishs.
          client.on("user-published", handleUserPublished);
          client.on("user-unpublished", handleUserUnpublished);
          //當前輸入媒體流的狀態。
          client.on("stream-inject-status", handleInjectStatus);
          
          // join a channel and create local tracks, we can use Promise.all to run them concurrently
          [options.uid, localTracks.audioTrack, localTracks.videoTrack]=await Promise.all([
          	// join the channel
          	client.join(options.appid, options.channel, options.token || null, options.uid || null),
          	// create local tracks, using microphone and camera
          	ArRTC.createMicrophoneAudioTrack(),
          	ArRTC.createCameraVideoTrack()
          ]);
              
          localTracks.videoTrack.play("local-player");
          

          相關事件回調(anyrtc sdk配套的事件回調)

          用戶加入房間(user-published)

          function handleUserPublished(user, mediaType) {
          	const id=user.uid;
          	remoteUsers[id]=user;//存放用戶相關視頻信息
          	subscribe(user, mediaType);//訂閱用戶發布的視頻流
          }
          

          用戶離開房間(user-unpublished)

          function handleUserUnpublished(user) {
          	const id=user.uid;
          	delete remoteUsers[id];//刪除用戶相關視頻信息
          	$(`#player-wrapper-${id}`).remove();
          }
          

          訂閱發布視頻渲染到頁面的方法封裝

          async function subscribe(user, mediaType) {
          	const uid=user.uid;
          	// subscribe to a remote user
          	await client.subscribe(user, mediaType);
          	if (mediaType==="video") {
          		const player=$(
          `
                <div id="player-wrapper-${uid}" class="col-6">
                  <p class="player-name">remoteUser(${uid})</p>
                  <div class="player-with-stats">
                    <div id="player-${uid}" class="player"></div>
                    <div class="track-stats stats"></div>
                  </div>
                </div>
           `
          		);
          		$("#remote-playerlist").append(player);
          		user.videoTrack.play(`player-${uid}`);
          	}
          	if (mediaType==="audio") {
          		user.audioTrack.play();
          	}
          }
          

          離開房間(leave)

          client.leave();
          

          插入媒體流

          媒體流地址(html 輸入)

          <input id="url" type="text" placeholder="rtmp://58.200.131.2:1935/livetv/hunantv">
          

          添加媒體流(addInjectStreamUrl)

          // 地址
          $("#url").val() ? options.url=$("#url").val() : options.url=$("#url")[0].placeholder;
          const injectStreamConfig={
          	width: 0,
          	height: 0,
          	videoGop: 30,
          	videoFramerate: 100,
          	videoBitrate: 3500,
          	audioSampleRate: 44100,
          	audioChannels: 1,
          };
          await client.addInjectStreamUrl(options.url, injectStreamConfig);
          

          停止媒體流(removeInjectStreamUrl)

          await client.removeInjectStreamUrl();
          

          三、參考

          參考 anyRTC ArRTC WebSDK Demos

          demos.anyrtc.io/Demo/

          作者:anyRTC 張耀

          一部分:HTML簡介

          什么是HTML?

          HTML代表超文本標記語言(Hypertext Markup Language)。它是一種用于構建網頁的標記語言。HTML文件包含一組標簽,這些標簽用于定義網頁的結構和內容。瀏覽器讀取HTML文件,并根據標記中的指示呈現網頁內容。

          HTML的主要作用是定義文本內容、圖像、鏈接和其他媒體的排列方式,并提供交互元素,例如表單和按鈕。

          HTML的基本結構

          每個HTML文檔都應該遵循以下基本結構:

          <!DOCTYPE html>
          <html>
          <head>
              <title>網頁標題</title>
          </head>
          <body>
              <!-- 內容在這里 -->
          </body>
          </html>
          

          讓我們逐步解釋這個結構:

          • <!DOCTYPE html>:這是文檔類型聲明,它告訴瀏覽器正在使用的HTML版本。<!DOCTYPE html>表示使用HTML5。
          • <html>:HTML文檔的根元素。所有其他元素都包含在<html>標簽內。
          • <head>:包含與文檔相關的元信息,如頁面標題、字符集聲明和外部樣式表鏈接。
          • <title>:定義網頁的標題,顯示在瀏覽器標簽頁上。
          • <body>:包含網頁的主要內容,如文本、圖像和其他媒體。

          HTML標簽和元素

          HTML標簽是由尖括號括起來的名稱,例如<p>表示段落,<img>表示圖像。標簽通常成對出現,有一個開始標簽和一個結束標簽。例如:

          <p>這是一個段落。</p>
          

          <p>是開始標簽,</p>是結束標簽,文本位于兩個標簽之間。標簽定義了元素的類型和結構。

          有些HTML標簽是自封閉的,不需要結束標簽,例如<img>用于插入圖像。

          HTML注釋

          在HTML中,你可以使用注釋來添加說明性文字,注釋不會在瀏覽器中顯示。HTML注釋使用<!--開頭和-->結尾,如下所示:

          <!-- 這是一個注釋 -->
          

          注釋通常用于添加文檔說明、調試代碼或標記未來的修改。

          第二部分:HTML基本元素

          文本

          HTML中的文本通常包含在段落、標題、列表等元素中。以下是一些常見的文本元素:

          • <p>:定義一個段落。
          • <h1><h6>:定義標題,<h1>是最高級別的標題,<h6>是最低級別的標題。
          • <strong>:定義強調文本,通常以粗體顯示。
          • <em>:定義強調文本,通常以斜體顯示。
          • <a>:定義超鏈接,允許用戶點擊跳轉到其他頁面。

          示例:

          <p>這是一個段落。</p>
          <h1>這是一個標題</h1>
          <p><strong>這是強調文本。</strong></p>
          <p><em>這是斜體文本。</em></p>
          <p>訪問<a href="https://www.example.com">示例網站</a></p>
          

          圖像

          要在網頁中插入圖像,可以使用<img>標簽。它是一個自封閉標簽,需要指定圖像的src屬性來指定圖像文件的路徑。

          示例:

          htmlCopy code
          <img src="image.jpg" alt="圖像描述">
          
          • src:指定圖像文件的路徑。
          • alt:提供圖像的替代文本,用于無法加載圖像時的文字描述。

          鏈接

          通過使用<a>標簽,可以在網頁中創建鏈接。鏈接通常包含在文本或圖像中,并使用href屬性指定目標URL。

          示例:

          <a href="https://www.example.com">訪問示例網站</a>
          
          • href:指定鏈接的目標URL。

          列表

          HTML支持有序列表(<ol>)、無序列表(<ul>)和定義列表(<dl>)。

          無序列表

          無序列表使用<ul>標簽定義,每個列表項使用<li>標簽。

          示例:

          <ul>
              <li>項目1</li>
              <li>項目2</li>
              <li>項目3</li>
          </ul>
          

          有序列表

          有序列表使用<ol>標簽定義,每個列表項使用<li>標簽。

          示例:

          <ol>
              <li>第一項</li>
              <li>第二項</li>
              <li>第三項</li>
          </ol>
          

          定義列表

          定義列表使用<dl>標簽定義,每個定義項目使用<dt>標簽定義術語,使用<dd>標簽定義描述。

          示例:

          <dl>
              <dt>術語1</dt>
              <dd>描述1</dd>
              <dt>術語2</dt>
              <dd>描述2</dd>
          </dl>
          

          第三部分:HTML表單

          HTML表單允許用戶與網頁進行交互,提交數據。以下是HTML表單的基本元素:

          <form>元素

          <form>元素用于創建表單,可以包含文本字段、復選框、單選按鈕、下拉列表等。

          示例:

          <form action="submit.php" method="post">
              <!-- 表單元素在這里 -->
          </form>
          
          • action:指定表單數據提交的目標URL。
          • method:指定提交方法,通常是"post"或"get"。

          輸入字段

          輸入字段用于接收用戶輸入的數據,常見的輸入字段類型包括文本框、密碼框、單選按鈕、復選框等。

          文本框

          文本框使用<input>標簽,type屬性設置為"text"。

          示例:

          <input type="text" name="username" placeholder="用戶名">
          
          • type:指定字段類型。
          • name:指定字段的名稱。
          • placeholder:設置文本框的占位符文本。

          密碼框

          密碼框使用<input>標簽,type屬性設置為"password"。

          示例:

          htmlCopy code
          <input type="password" name="password" placeholder="密碼">
          

          單選按鈕

          單選按鈕使用<input>標簽,type屬性設置為"radio"。

          示例:

          <input type="radio" name="gender" value="male">男
          <input type="radio" name="gender" value="female">女
          
          • name:指定單選按鈕組的名稱。
          • value:指定每個選項的值。

          復選框

          復選框使用<input>標簽,type屬性設置為"checkbox"。

          示例:

          <input type="checkbox" name="subscribe" value="yes">訂閱新聞
          

          下拉列表

          下拉列表使用<select><option>標簽創建。<select>定義下拉列表,而<option>定義選項。

          示例:

          <select name="country">
              <option value="us">美國</option>
              <option value="ca">加拿大</option>
              <option value="uk">英國</option>
          </select>
          
          • name:指定下拉列表的名稱。
          • 每個<option>標簽表示一個選項,使用value屬性定義選項的值。

          第四部分:HTML樣式和CSS

          HTML用于定義網頁的結構和內容,但要使網頁看起來更吸引人,需要使用CSS(層疊樣式表)。CSS允許你定義字體、顏色、布局等樣式。

          內聯樣式

          可以在HTML元素內部使用style屬性來定義內聯樣式。

          示例:

          <p style="color: blue; font-size: 16px;">這是一個藍色的段落。</p>
          

          外部樣式表

          外部樣式表將樣式規則保存在獨立的CSS文件中,并通過<link>標簽將其鏈接到HTML文檔。

          示例(style.css):

          /* style.css */
          p {
              color: blue;
              font-size: 16px;
          }
          

          在HTML中鏈接外部樣式表:

          <link rel="stylesheet" type="text/css" href="style.css">
          

          這使得可以在整個網站上共享相同的樣式。

          總結

          HTML是構建現代網頁的基礎。通過學習HTML的基本語法和元素,你可以創建吸引人且功能強大的網頁。無論是文本、圖像、鏈接還是表單,HTML提供了豐富的工具來呈現內容和實現用戶交互。

          這篇文章提供了HTML的基礎知識,但HTML是一個廣泛的主題,還有許多高級特性和技巧等待你探索。希望這篇文章對你入門HTML有所幫助,讓你能夠開始創建自己的網頁。繼續學習和實踐,你將成為一個熟練的網頁開發者。

          度搜索:Dreamweaver CC 網頁制作:[9]插入視頻-百度經驗 (baidu.com)

          方法/步驟

          1. 新建一個html5文件,點擊文件->新建->html,選擇html5,也可以在代碼視圖中粘貼以下代碼

          <!doctype html>

          <html><head><meta charset="utf-8"><title>插入視頻</title></head><body></body></html>

          1. 文件新建好后點擊主菜單中的插入,在插入菜單中找到媒體
          2. 鼠標移到媒體上在右邊列出的菜單中點擊html5 video
          3. 點擊插入之后在設計視圖中會出現一個html5 的視頻插件圖標
          4. 點擊插件在屬性欄中填寫視頻的相關信息最主要填寫的就是視頻的地址。視頻格式是根據瀏覽器定的不同的瀏覽器支持的格式不同據體的可以查看html5 手冊,本測過360 google firefox 都支持mp4
          5. 填寫好視頻地址保存文件就可用firefox瀏覽器打開看看這小小效果了。打開后鼠標移到視頻上點擊播放按鈕就可以播放了

          主站蜘蛛池模板: 欧亚精品一区三区免费| 无码视频一区二区三区在线观看| 精品国产毛片一区二区无码| 国产福利91精品一区二区| 国产精品小黄鸭一区二区三区 | 尤物精品视频一区二区三区| 久久99精品国产一区二区三区| 蜜桃视频一区二区| 国产高清视频一区二区| 国产激情一区二区三区小说| 亚洲色精品VR一区区三区| 亚洲一区二区三区精品视频| 搡老熟女老女人一区二区| 国产内射在线激情一区| 日本免费电影一区二区| 美女啪啪一区二区三区| 久久综合九九亚洲一区| 日韩精品中文字幕无码一区| 日韩人妻精品无码一区二区三区 | 无码国产精成人午夜视频一区二区| 国产福利电影一区二区三区久久久久成人精品综合 | 嫩B人妻精品一区二区三区| 一区二区中文字幕在线观看| 免费在线观看一区| 国产精品主播一区二区| 国产午夜三级一区二区三| 亚洲日韩精品一区二区三区无码 | 韩国福利一区二区美女视频| 国产韩国精品一区二区三区久久 | 狠狠综合久久AV一区二区三区| 国产日韩精品一区二区三区在线| 丰满人妻一区二区三区视频53| 国产日韩精品一区二区三区在线 | 国产福利一区二区三区在线观看| 人妻精品无码一区二区三区| 日本精品夜色视频一区二区| 中文字幕在线观看一区二区三区| 亚洲熟妇av一区二区三区| 91在线一区二区| 国产精品一区二区AV麻豆| 日韩毛片一区视频免费|