国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于 Web SDK 實(shí)現(xiàn)視頻通話場景 | 聲網(wǎng) SDK 教程

這篇具有很好參考價(jià)值的文章主要介紹了基于 Web SDK 實(shí)現(xiàn)視頻通話場景 | 聲網(wǎng) SDK 教程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

基于 Web SDK 實(shí)現(xiàn)視頻通話場景 | 聲網(wǎng) SDK 教程

聲網(wǎng)視頻 SDK 被廣泛應(yīng)用于多種實(shí)時(shí)互動(dòng)場景中,例如視頻會(huì)議、視頻通話、音視頻社交、在線教育等。為了讓剛剛接觸聲網(wǎng) SDK 的開發(fā)者,可以更順暢地實(shí)現(xiàn)基礎(chǔ)的視頻通話功能,我們基于聲網(wǎng) Web SDK 4.x 版本梳理了本篇教程。

在本文末,會(huì)提供相應(yīng) Demo 、文檔地址供大家參考使用。同時(shí),歡迎點(diǎn)擊此處注冊聲網(wǎng)賬號(hào)體驗(yàn)。聲網(wǎng)每個(gè)月會(huì)為開發(fā)者提供 10000 分鐘的免費(fèi)額度。

本文為「聲網(wǎng) SDK 教程」系列內(nèi)容

01 Demo 體驗(yàn)

我們在 GitHub 上提供一個(gè)開源的基礎(chǔ)視頻通話示例項(xiàng)目,在開始開發(fā)之前你可以通過該示例項(xiàng)目體驗(yàn)音視頻通話效果。同時(shí),聲網(wǎng)官方還提供了Demo 與線上體驗(yàn)地址。

以下這些資料、文檔,你可能會(huì)在動(dòng)手實(shí)踐過程中會(huì)用到:

1.Github 源碼

https://github.com/AgoraIO/API-Examples-Web/tree/main/Demo/basicVideoCall

2.線上體驗(yàn)Demo(注意,由于體驗(yàn) Demo 需要填寫 appID,所以需要先注冊聲網(wǎng)賬號(hào))

https://webdemo.agora.io/basicVideoCall/index.html

3.注冊聲網(wǎng)賬號(hào)

https://sso2.agora.io/cn/v4/signup/with-sms

4.聲網(wǎng)文檔中心

https://docs.agora.io/cn/Video/downloads?platform=Web文章來源地址http://www.zghlxwxcb.cn/news/detail-406308.html

02 動(dòng)手實(shí)踐

實(shí)踐任務(wù)

從 Web 前端頁面引入聲網(wǎng) SDK,發(fā)起視頻通話。

開發(fā)環(huán)境

聲網(wǎng) SDK 的兼容性良好,對(duì)硬件設(shè)備和軟件系統(tǒng)的要求不高,開發(fā)環(huán)境和測試環(huán)境滿足以下條件即可:

  • Chrome
  • Firefox
  • Safari
  • Edge

以下是本文的開發(fā)環(huán)境和測試環(huán)境:

開發(fā)環(huán)境

  • MacBook Pro (13-inch, M1, 2020)
  • Visual Studio Code (1.67.1)

測試環(huán)境

  • Chrome (101.0.4951.64)

如果你此前還未接觸過聲網(wǎng) SDK,那么你還需要做以下準(zhǔn)備工作:

  • 注冊一個(gè)聲網(wǎng)賬號(hào),進(jìn)入后臺(tái)創(chuàng)建 AppID、獲取 Token;
  • 下載聲網(wǎng)官方最新的 視頻 SDK。
項(xiàng)目設(shè)置

文件組織結(jié)構(gòu)

實(shí)現(xiàn)視頻通話之前,參考如下步驟設(shè)置你的項(xiàng)目:

如需創(chuàng)建新項(xiàng)目,可以在 Visual Studio Code 里 File > New Window,創(chuàng)建 Web 項(xiàng)目。完整的目錄結(jié)構(gòu)如下,根據(jù)個(gè)人經(jīng)驗(yàn)會(huì)有所變化。

.
├── index.css # 用于設(shè)計(jì) Web 應(yīng)用的用戶界面樣式
├── index.html # 用于設(shè)計(jì) Web 應(yīng)用的用戶界面
├── index.js # 通過 AgoraRTCClient 實(shí)現(xiàn)具體應(yīng)用邏輯的代碼。
└── vendor # 第三方前端插件,輔助頁面布局和交互,本教程中是下載到本地使用,你也可以使用 CDN 的方式
    ├── bootstrap.bundle.min.js
    ├── bootstrap.min.css
    └── jquery-3.4.1.min.js

集成聲網(wǎng) SDK

可以下載到本地使用,也可以直接使用聲網(wǎng)的 CDN 引入, 本文推薦使用 CDN 方式集成聲網(wǎng) SDK。

在 index.html 中添加以下代碼

<!DOCTYPE html>
...
  <link rel="stylesheet" href="./vendor/bootstrap.min.css">
  <link rel="stylesheet" href="./index.css">
...
  <script src="./vendor/jquery-3.4.1.min.js"></script>
  <script src="./vendor/bootstrap.bundle.min.js"></script>
  <script src="https://download.agora.io/sdk/release/AgoraRTC_N.js"></script>
  <script src="./index.js"></script>
...

最終完整代碼為

可以直接復(fù)制運(yùn)行。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Basic Video Call -- Agora</title>
  <link rel="stylesheet" href="./vendor/bootstrap.min.css">
  <link rel="stylesheet" href="./index.css">
</head>
<body>
  <div class="container-fluid banner">
    <p class="banner-text">Basic Video Call</p>
    <a style="color: rgb(255, 255, 255);fill: rgb(255, 255, 255);fill-rule: evenodd; position: absolute; right: 10px; top: 4px;"
      class="Header-link " >
      <svg class="octicon octicon-mark-github v-align-middle" height="32" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
    </a>
  </div>
 
 
  <div id="success-alert" class="alert alert-success alert-dismissible fade show" role="alert">
    <strong>Congratulations!</strong><span> You can invite others join this channel by click </span><a href="" target="_blank">here</a>
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>
  </div>
  <div id="success-alert-with-token" class="alert alert-success alert-dismissible fade show" role="alert">
    <strong>Congratulations!</strong><span> Joined room successfully. </span>
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>
  </div>
  <div id="success-alert-with-token" class="alert alert-success alert-dismissible fade show" role="alert">
    <strong>Congratulations!</strong><span> Joined room successfully. </span>
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>
  </div>
   
  <div class="container">
    <form id="join-form">
      <div class="row join-info-group">
          <div class="col-sm">
            <p class="join-info-text">AppID</p>
            <input id="appid" type="text" placeholder="enter appid" required>
            <p class="tips">If you don`t know what is your appid, checkout <a >this</a></p>
          </div>
          <div class="col-sm">
            <p class="join-info-text">Token(optional)</p>
            <input id="token" type="text" placeholder="enter token">
            <p class="tips">If you don`t know what is your token, checkout <a >this</a></p>
          </div>
          <div class="col-sm">
            <p class="join-info-text">Channel</p>
            <input id="channel" type="text" placeholder="enter channel name" required>
            <p class="tips">If you don`t know what is your channel, checkout <a >this</a></p>
          </div>
      </div>
 
      <div class="button-group">
        <button id="join" type="submit" class="btn btn-primary btn-sm">Join</button>
        <button id="leave" type="button" class="btn btn-primary btn-sm" disabled>Leave</button>
      </div>
    </form>
 
    <div class="row video-group">
      <div class="col">
        <p id="local-player-name" class="player-name"></p>
        <div id="local-player" class="player"></div>
      </div>
      <div class="w-100"></div>
      <div class="col">
        <div id="remote-playerlist"></div>
      </div>
    </div>
  </div>
 
  <script src="./vendor/jquery-3.4.1.min.js"></script>
  <script src="./vendor/bootstrap.bundle.min.js"></script>
  <script src="https://download.agora.io/sdk/release/AgoraRTC_N.js"></script>
  <script src="./index.js"></script>
</body>
</html>
視頻通話邏輯

實(shí)現(xiàn)視頻通話邏輯

下圖展示視頻通話的 API 調(diào)用時(shí)序,注意圖中的方法是對(duì)不同的對(duì)象調(diào)用的。

基于 Web SDK 實(shí)現(xiàn)視頻通話場景 | 聲網(wǎng) SDK 教程

參考以下步驟實(shí)現(xiàn)音視頻通話的邏輯:

1.調(diào)用 createClient 方法創(chuàng)建 AgoraRTCClient 對(duì)象。

2.調(diào)用 join 方法加入一個(gè) RTC 頻道,你需要在該方法中傳入 App ID 、用戶 ID、Token、頻道名稱。

3.先調(diào)用 createMicrophoneAudioTrack 通過麥克風(fēng)采集的音頻創(chuàng)建本地音頻軌道對(duì)象,調(diào)用 createCameraVideoTrack 通過攝像頭采集的視頻創(chuàng)建本地視頻軌道對(duì)象;然后調(diào)用 publish 方法,將這些本地音視頻軌道對(duì)象當(dāng)作參數(shù)即可將音視頻發(fā)布到頻道中。

4.當(dāng)一個(gè)遠(yuǎn)端用戶加入頻道并發(fā)布音視頻軌道時(shí):

a.監(jiān)聽 client.on(“user-published”) 事件。當(dāng) SDK 觸發(fā)該事件時(shí),在這個(gè)事件回調(diào)函數(shù)的參數(shù)中你可以獲取遠(yuǎn)端用戶 AgoraRTCRemoteUser 對(duì)象 。

b.調(diào)用 subscribe 方法訂閱遠(yuǎn)端用戶 AgoraRTCRemoteUser 對(duì)象,獲取遠(yuǎn)端用戶的遠(yuǎn)端音頻軌道 RemoteAudioTrack 和遠(yuǎn)端視頻軌道 RemoteVideoTrack 對(duì)象。

c.調(diào)用 play 方法播放遠(yuǎn)端音視頻軌道。

注:以下代碼都將在 index.js 中添加**

初始化client

var client = AgoraRTC.createClient({ mode: "rtc", codec: "vp8" });

加入RTC 頻道并創(chuàng)建本地音頻軌道

// Join a channel and create local tracks. Best practice is to use Promise.all and 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 tracks to the local microphone and camera.
  AgoraRTC.createMicrophoneAudioTrack(),
  AgoraRTC.createCameraVideoTrack()
]);

播放本地視頻

// Play the local video track to the local browser and update the UI with the user ID.
localTracks.videoTrack.play("local-player");

發(fā)布本地音視頻到頻道中

// Publish the local video and audio tracks to the channel.
await client.publish(Object.values(localTracks));

監(jiān)聽遠(yuǎn)端用戶音視頻

// Add an event listener to play remote tracks when remote user publishes.
client.on("user-published", handleUserPublished);
client.on("user-unpublished", handleUserUnpublished);
 
function handleUserPublished(user, mediaType) {
  const id = user.uid;
  remoteUsers[id] = user;
  subscribe(user, mediaType);
}
 
function handleUserUnpublished(user, mediaType) {
  if (mediaType === 'video') {
    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);
  console.log("subscribe success");
  if (mediaType === 'video') {
    const player = $(`
      <div id="player-wrapper-${uid}">
        <p class="player-name">remoteUser(${uid})</p>
        <div id="player-${uid}" class="player"></div>
      </div>
    `);
    $("#remote-playerlist").append(player);
    user.videoTrack.play(`player-${uid}`);
  }
 
  if (mediaType === 'audio') {
    user.audioTrack.play();
  }
}

離開頻道

async function leave() {
  for (trackName in localTracks) {
    var track = localTracks[trackName];
    if(track) {
      track.stop();
      track.close();
      localTracks[trackName] = undefined;
    }
  }
 
  // Remove remote users and player views.
  remoteUsers = {};
  $("#remote-playerlist").html("");
 
  // leave the channel
  await client.leave();
 
}

最終完整的代碼

// create Agora client
var client = AgoraRTC.createClient({ mode: "rtc", codec: "vp8" });
 
 
var localTracks = {
  videoTrack: null,
  audioTrack: null
};
var remoteUsers = {};
// Agora client options
var options = {
  appid: null,
  channel: null,
  uid: null,
  token: null
};
 
// the demo can auto join channel with params in url
$(() => {
  var urlParams = new URL(location.href).searchParams;
  options.appid = urlParams.get("appid");
  options.channel = urlParams.get("channel");
  options.token = urlParams.get("token");
  if (options.appid && options.channel) {
    $("#appid").val(options.appid);
    $("#token").val(options.token);
    $("#channel").val(options.channel);
    $("#join-form").submit();
  }
})
 
$("#join-form").submit(async function (e) {
  e.preventDefault();
  $("#join").attr("disabled", true);
  try {
    options.appid = $("#appid").val();
    options.token = $("#token").val();
    options.channel = $("#channel").val();
    await join();
    if(options.token) {
      $("#success-alert-with-token").css("display", "block");
    } else {
      $("#success-alert a").attr("href", `index.html?appid=${options.appid}&channel=${options.channel}&token=${options.token}`);
      $("#success-alert").css("display", "block");
    }
  } catch (error) {
    console.error(error);
  } finally {
    $("#leave").attr("disabled", false);
  }
})
 
$("#leave").click(function (e) {
  leave();
})
 
async function join() {
 
  // add event listener to play remote tracks when remote user publishs.
  client.on("user-published", handleUserPublished);
  client.on("user-unpublished", handleUserUnpublished);
 
  // 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),
    // create local tracks, using microphone and camera
    AgoraRTC.createMicrophoneAudioTrack(),
    AgoraRTC.createCameraVideoTrack()
  ]);
   
  // play local video track
  localTracks.videoTrack.play("local-player");
  $("#local-player-name").text(`localVideo(${options.uid})`);
 
  // publish local tracks to channel
  await client.publish(Object.values(localTracks));
  console.log("publish success");
}
 
async function leave() {
  for (trackName in localTracks) {
    var track = localTracks[trackName];
    if(track) {
      track.stop();
      track.close();
      localTracks[trackName] = undefined;
    }
  }
 
  // remove remote users and player views
  remoteUsers = {};
  $("#remote-playerlist").html("");
 
  // leave the channel
  await client.leave();
 
  $("#local-player-name").text("");
  $("#join").attr("disabled", false);
  $("#leave").attr("disabled", true);
  console.log("client leaves channel success");
}
 
async function subscribe(user, mediaType) {
  const uid = user.uid;
  // subscribe to a remote user
  await client.subscribe(user, mediaType);
  console.log("subscribe success");
  if (mediaType === 'video') {
    const player = $(`
      <div id="player-wrapper-${uid}">
        <p class="player-name">remoteUser(${uid})</p>
        <div id="player-${uid}" class="player"></div>
      </div>
    `);
    $("#remote-playerlist").append(player);
    user.videoTrack.play(`player-${uid}`);
  }
  if (mediaType === 'audio') {
    user.audioTrack.play();
  }
}
 
function handleUserPublished(user, mediaType) {
  const id = user.uid;
  remoteUsers[id] = user;
  subscribe(user, mediaType);
}
 
function handleUserUnpublished(user) {
  const id = user.uid;
  delete remoteUsers[id];
  $(`#player-wrapper-${id}`).remove();
}

運(yùn)行效果

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-qHpzqvtR-1658572023354)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]在瀏覽器開兩個(gè)tab運(yùn)行網(wǎng)頁,使用兩個(gè)用戶加入同一個(gè)頻道,如果能看見兩個(gè)自己,說明你成功了。

03 完整代碼下載

訪問聲網(wǎng)文檔中心,根據(jù)下圖所示路徑,下載對(duì)應(yīng) SDK 壓縮包。壓縮包中包含完整代碼。
基于 Web SDK 實(shí)現(xiàn)視頻通話場景 | 聲網(wǎng) SDK 教程

參考鏈接

1.Github 源碼

https://github.com/AgoraIO/API-Examples-Web/tree/main/Demo/basicVideoCall

2.線上體驗(yàn)Demo(注意,由于體驗(yàn) Demo 需要填寫 appID,所以需要先注冊聲網(wǎng)賬號(hào))

https://webdemo.agora.io/basicVideoCall/index.html

3.注冊聲網(wǎng)賬號(hào)

https://sso2.agora.io/cn/v4/signup/with-sms

4.聲網(wǎng)文檔中心

https://docs.agora.io/cn/Video/downloads?platform=Web

到了這里,關(guān)于基于 Web SDK 實(shí)現(xiàn)視頻通話場景 | 聲網(wǎng) SDK 教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • unity 使用聲網(wǎng)(Agora)實(shí)現(xiàn)語音通話

    unity 使用聲網(wǎng)(Agora)實(shí)現(xiàn)語音通話

    第一步、先申請一個(gè)聲網(wǎng)賬號(hào) [Agora官網(wǎng)鏈接](https://console.shengwang.cn/) 第二步在官網(wǎng)創(chuàng)建項(xiàng)目 ,選擇無證書模式,證書模式需要tokenh和Appld才能通話 第三步 官網(wǎng)下載SDK 然后導(dǎo)入到unity,也可以直接在unity商店里下載,Agora官網(wǎng)下載鏈接 第四步 運(yùn)行官方Demo 1、導(dǎo)入后會(huì)有這些

    2024年04月25日
    瀏覽(24)
  • 【聲網(wǎng)】實(shí)現(xiàn)web端與uniapp微信小程序端音視頻互動(dòng)

    【聲網(wǎng)】實(shí)現(xiàn)web端與uniapp微信小程序端音視頻互動(dòng)

    利用聲網(wǎng)實(shí)現(xiàn)音視頻互動(dòng) 注冊聲網(wǎng)賬號(hào) 進(jìn)入Console 成功登錄控制臺(tái)后,按照以下步驟創(chuàng)建一個(gè)聲網(wǎng)項(xiàng)目: 展開控制臺(tái)左上角下拉框,點(diǎn)擊 創(chuàng)建項(xiàng)目 按鈕。 在彈出的對(duì)話框內(nèi),依次選擇 項(xiàng)目類型 ,輸入 項(xiàng)目名稱 ,選擇 場景標(biāo)簽 和 鑒權(quán)機(jī)制 。其中鑒權(quán)機(jī)制推薦選擇 安全

    2024年04月27日
    瀏覽(53)
  • 使用聲網(wǎng) SDK 為 Android App 添加視頻直播

    使用聲網(wǎng) SDK 為 Android App 添加視頻直播

    視頻互動(dòng)直播是當(dāng)前比較熱門的玩法,我們經(jīng)常見到有PK 連麥、直播答題、一起 KTV、電商直播、互動(dòng)大班課、視頻相親等。 本文將演示如何通過聲網(wǎng)視頻 SDK 在 Android 端實(shí)現(xiàn)一個(gè)視頻直播應(yīng)用。 ??點(diǎn)擊這里注冊聲網(wǎng)賬號(hào)后,開發(fā)者每個(gè)月可獲得 10000 分鐘的免費(fèi)使用額度,可

    2023年04月11日
    瀏覽(16)
  • Web網(wǎng)頁音視頻通話之基于Sipjs

    Web網(wǎng)頁音視頻通話之基于Sipjs

    簡述 本文是以 FreeSwitch 作為信令服務(wù)器,通過sipjs(基于webRtc) 進(jìn)行媒體協(xié)商,網(wǎng)絡(luò)協(xié)商后,進(jìn)行P2P媒體傳輸。 參考知識(shí): sip.js https://sipjs.com/ webRtc開發(fā)手冊 https://developer.mozilla.org/zh-CN/docs/Web/API/WebRTC_API 效果圖 : HTML javaScript operation.js 撥打 接聽 通話中

    2023年04月17日
    瀏覽(24)
  • SpringBoot+WebSocket+Vue+PeerJs實(shí)現(xiàn)WebRTC視頻通話功能,Vue視頻通話,web視頻通話,webrtc視頻通話

    SpringBoot+WebSocket+Vue+PeerJs實(shí)現(xiàn)WebRTC視頻通話功能,Vue視頻通話,web視頻通話,webrtc視頻通話

    博主正在擔(dān)任一款電商app的全棧開發(fā),其中涉及到一個(gè) 視頻通話 功能。但是由于業(yè)務(wù)需求及成本考慮,不能使用第三方提供的SDK進(jìn)行開發(fā)。所以博主選擇使用PeerJs+WebSocket來實(shí)現(xiàn)這個(gè)功能。 WebSocket是一種在單個(gè)TCP連接上進(jìn)行全雙工通信的協(xié)議。WebSocket通信協(xié)議于2011年被IETF定

    2024年02月08日
    瀏覽(22)
  • 基于WebAssembly構(gòu)建Web端音視頻通話引擎

    基于WebAssembly構(gòu)建Web端音視頻通話引擎

    Web技術(shù)在發(fā)展,音視頻通話需求在演進(jìn),怎么去實(shí)現(xiàn)新的Web技術(shù)點(diǎn)在實(shí)際應(yīng)用中的值,以及給我們帶來更大的收益是需要我們?nèi)ヌ剿骱蛯?shí)踐的。LiveVideoStackCon 2022北京站邀請到田建華為我們從實(shí)踐中來介紹WebAssembly、WebCodecs、WebTransport等技術(shù)在音視頻行業(yè)的價(jià)值以及優(yōu)勢。 文

    2024年02月11日
    瀏覽(17)
  • web 前端實(shí)現(xiàn)音視頻通話 - liveKit 框架

    web 前端實(shí)現(xiàn)音視頻通話 - liveKit 框架

    go1.18以上 liveKit-server.exe liveKit官方文檔鏈接 科學(xué)上網(wǎng)(github) 在liveKit 中有兩個(gè)概念,分別是:room 房間 和 user 用戶 房間很好理解,類似一個(gè)騰訊會(huì)議中的 一個(gè)會(huì)議 用戶指的是 加入房間的所有人。 每個(gè)用戶的權(quán)限是相同的 想要實(shí)現(xiàn)主持人功能,可以通過web服務(wù)器來對(duì)liveKi

    2024年04月14日
    瀏覽(17)
  • 基于webrtc的音視頻通話,實(shí)現(xiàn)相機(jī)流識(shí)別人臉的功能

    這幾天研究了一下webRTC的基礎(chǔ)能力,在此基礎(chǔ)之上能實(shí)現(xiàn)的視頻通話,互動(dòng)等更多實(shí)用功能。項(xiàng)目中使用的是阿里的rtc,我研究的是聲網(wǎng)的是否符合功能,后續(xù)會(huì)總結(jié)和記錄一下應(yīng)用到的幾個(gè)功能實(shí)現(xiàn)方法。 今天要記錄的功能是項(xiàng)目流識(shí)別人臉的功能,其實(shí)類似功能很常見了

    2024年04月28日
    瀏覽(27)
  • 直播相關(guān)——聲網(wǎng)rtc SDK

    遙想約4年前,也自行調(diào)研過,雖然最終沒有在實(shí)際項(xiàng)目中落地。 聲網(wǎng)Android端集成與一對(duì)一音視頻功能實(shí)現(xiàn) 現(xiàn)在,終于要開始在項(xiàng)目中正式落地了,而聲網(wǎng)也從原來的v3.x升級(jí)到了v4.x版本了。根據(jù)官網(wǎng)介紹,兩大版本間改動(dòng)還是比較大的。本次集成落地,會(huì)直接用v4.x版本。

    2024年03月12日
    瀏覽(38)
  • Hololens2遠(yuǎn)程音視頻通話與AR遠(yuǎn)程空間標(biāo)注,基于OpenXR+MRTK3+WebRTC實(shí)現(xiàn)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包