Tutorial Langkah-demi-Langkah: Buat Aplikasi Langsung Menggunakan React dan Video SDK

 – Beragampengetahuan
10 mins read

Tutorial Langkah-demi-Langkah: Buat Aplikasi Langsung Menggunakan React dan Video SDK – Beragampengetahuan

Pelajari cara membuat aplikasi streaming langsung yang kuat dengan tutorial langkah demi langkah ini. Jelajahi integrasi tanpa batas dari React dan Video SDK untuk membangun pengalaman siaran langsung yang interaktif. Ikuti kami saat kami memandu Anda melalui proses pengembangan, mulai dari menyiapkan lingkungan Anda hingga menerapkan fitur utama seperti obrolan langsung, streaming video langsung, dan alat interaksi interaktif. Keluarkan potensi React dan Video SDK untuk membuat aplikasi langsung yang menarik yang melibatkan audiens Anda tidak seperti sebelumnya. Mulailah hari ini dan tingkatkan keterampilan pengembangan aplikasi langsung Anda ke level berikutnya!

Di era digital saat ini, live streaming menjadi media yang semakin populer untuk berbagi konten dan berinteraksi dengan penonton secara real time. Dengan munculnya platform seperti YouTube, Twitch, dan Facebook Live, bisnis dan individu sama-sama mengeksplorasi cara memanfaatkan kekuatan video langsung untuk terhubung dengan audiens target mereka. Jika Anda ingin membuat aplikasi live streaming interaktif dengan React dan Video SDK, Anda berada di tempat yang tepat. Dalam artikel ini, kami akan memandu Anda melalui proses pembuatan aplikasi streaming langsung canggih yang akan membantu Anda menonjol dari persaingan.

React telah menjadi salah satu framework JavaScript yang paling banyak digunakan untuk membangun antarmuka pengguna. Arsitektur berbasis komponennya, DOM virtual, dan rendering yang efisien menjadikannya pilihan populer di kalangan developer. React menjadi kekuatan yang lebih kuat di dunia streaming langsung ketika digabungkan dengan Video SDK, perangkat canggih yang menyediakan alat dan fungsionalitas yang dibutuhkan pengembang untuk mengintegrasikan streaming video langsung ke dalam aplikasi mereka.

Contents

4 Langkah Membangun React Interactive Live App Menggunakan Video SDK

Alat untuk membuat aplikasi streaming langsung interaktif

  • Bereaksi SDK untuk VideoSDK.Live
  • Pengomposisian HLS untuk VideoSDK.Live
  • Streaming HLS dari VideoSDK.Live

Langkah 1: Pahami fitur aplikasi langsung dan struktur proyek kami

Saya akan membuat aplikasi ini untuk dua jenis pengguna, Speaker Dan Viewer.

  • Presenter akan memiliki semua kontrol media, yaitu mereka dapat mengaktifkan webcam dan mikrofon untuk berbagi pesan dengan audiens. Presenter juga dapat memulai streaming HLS sehingga audiens dapat menikmati konten.
  • Penonton tidak akan memiliki kontrol media apa pun, mereka hanya akan menonton streaming VideoSDK HLS yang dimulai oleh speaker

Prasyarat sebelum mulai membuat kode:

  • akun VideoSDK.Jika tidak, Anda dapat mendaftar
  • Lingkungan pengkodean untuk Bereaksi
  • Pemahaman yang baik tentang React

Setelah menyiapkan lingkungan pengkodean, sekarang kita dapat mulai menulis kode, pertama saya akan menggunakan create-react-app untuk membuat Aplikasi React baru, dan pada saat yang sama kita akan menginstal dependensi yang berguna.

npx create-react-app videosdk-interactive-live-streaming-app

cd videosdk-interactive-live-streaming-app

npm install @videosdk.live/react-sdk react-player hls.js
masuk ke mode layar penuh

Keluar dari mode layar penuh

struktur proyek

Saya akan membuat 3 layar:

  1. layar selamat datang
  2. layar pengeras suara
  3. layar penampil

Di bawah ini adalah struktur folder dari aplikasi kita.

root/
├──node_modules/
├──public/
├──src/
├────screens/
├───────WelcomeScreenContainer.js
├───────speakerScreen/
├──────────MediaControlsContainer.js
├──────────ParticipantsGridContainer.js
├──────────SingleParticipantContainer.js
├──────────SpeakerScreenContainer.js
├──────ViewerScreenContainer.js
├────api.js
├────App.js
├────index.js
masuk ke mode layar penuh

Keluar dari mode layar penuh

wadah aplikasi

Saya akan menyiapkan dasar App.jsFile ini akan berisi semua layar dan appData perubahan negara.

/src/App.js

import React, { useState } from "react";
import SpeakerScreenContainer from "./screens/speakerScreen/SpeakerScreenContainer";
import ViewerScreenContainer from "./screens/ViewerScreenContainer";
import WelcomeScreenContainer from "./screens/WelcomeScreenContainer";

const App = () => {
  const [appData, setAppData] = useState({ meetingId: null, mode: null });

  return appData.meetingId ? (
    appData.mode === "CONFERENCE" ? (
      <SpeakerScreenContainer meetingId={appData.meetingId} />
    ) : (
      <ViewerScreenContainer meetingId={appData.meetingId} />
    )
  ) : (
    <WelcomeScreenContainer setAppData={setAppData} />
  );
};

export default App;
masuk ke mode layar penuh

Keluar dari mode layar penuh

Langkah 2: Layar Selamat Datang untuk React Aplikasi Streaming Langsung

Membuat rapat baru akan membutuhkan panggilan api, jadi kami akan menulis beberapa kode untuk itu

Token autentikasi sementara dapat diperoleh dari dasbor pengguna kami, tetapi dalam produksi kami merekomendasikan penggunaan authToken yang dihasilkan server.

Ikuti panduan ini untuk mendapatkan token otorisasi sementara dari dasbor pengguna.

/src/api.js

export const authToken = "temporary-generated-auth-token-goes-here";

export const createNewRoom = async () => {
  const res = await fetch(`https://api.videosdk.live/v2/rooms`, {
    method: "POST",
    headers: {
      authorization: `${authToken}`,
      "Content-Type": "application/json",
    },
  });

  const { roomId } = await res.json();
  return roomId;
};
masuk ke mode layar penuh

Keluar dari mode layar penuh

WelcomeScreenContainer akan membantu membuat konferensi baru dengan speaker. Itu juga akan memungkinkan memasukkan meetingId yang sudah dibuat untuk bergabung dengan sesi yang ada.
src/screens/WelcomeScreenContainer.js

import React, { useState } from "react";
import { createNewRoom } from "../api";

const WelcomeScreenContainer = ({ setAppData }) => {
  const [meetingId, setMeetingId] = useState("");

  const createClick = async () => {
    const meetingId = await createNewRoom();

    setAppData({ mode: "CONFERENCE", meetingId });
  };
  const hostClick = () => setAppData({ mode: "CONFERENCE", meetingId });
  const viewerClick = () => setAppData({ mode: "VIEWER", meetingId });

  return (
    <div>
      <button onClick={createClick}>Create new Meeting</button>
      <p>{"\n\nor\n\n"}</p>
      <input
        placeholder="Enter meetingId"
        onChange={(e) => setMeetingId(e.target.value)}
        value={meetingId}
      />
      <p>{"\n\n"}</p>
      <button onClick={hostClick}>Join As Host</button>
      <button onClick={viewerClick}>Join As Viewer</button>
    </div>
  );
};

export default WelcomeScreenContainer;
masuk ke mode layar penuh

Keluar dari mode layar penuh

Langkah 3: Layar Speaker

Layar ini akan berisi semua kontrol media dan kisi peserta. Pertama, saya akan membuat kotak input nama untuk peserta yang akan bergabung.
src/screens/speakerScreen/SpeakerScreenContainer.js

import { MeetingProvider } from "@videosdk.live/react-sdk";
import React from "react";
import MediaControlsContainer from "./MediaControlsContainer";
import ParticipantsGridContainer from "./ParticipantsGridContainer";

import { authToken } from "../../api";

const SpeakerScreenContainer = ({ meetingId }) => {
  return (
    <MeetingProvider
      token={authToken}
      config={{
        meetingId,
        name: "C.V. Raman",
        micEnabled: true,
        webcamEnabled: true,
      }}
      joinWithoutUserInteraction
    >
      <MediaControlsContainer meetingId={meetingId} />
      <ParticipantsGridContainer />
    </MeetingProvider>
  );
};

export default SpeakerScreenContainer;
masuk ke mode layar penuh

Keluar dari mode layar penuh

kontrol media

Wadah ini akan digunakan untuk mengaktifkan mikrofon dan webcam. Selain itu, kami akan menambahkan beberapa kode untuk memulai streaming HLS.

import { useMeeting, Constants } from "@videosdk.live/react-sdk";
import React, { useMemo } from "react";

const MediaControlsContainer = () => {
  const { toggleMic, toggleWebcam, startHls, stopHls, hlsState, meetingId } =
    useMeeting();

  const { isHlsStarted, isHlsStopped, isHlsPlayable } = useMemo(
    () => ({
      isHlsStarted: hlsState === Constants.hlsEvents.HLS_STARTED,
      isHlsStopped: hlsState === Constants.hlsEvents.HLS_STOPPED,
      isHlsPlayable: hlsState === Constants.hlsEvents.HLS_PLAYABLE,
    }),
    [hlsState]
  );

  const _handleToggleHls = () => {
    if (isHlsStarted) {
      stopHls();
    } else if (isHlsStopped) {
      startHls({ quality: "high" });
    }
  };

  return (
    <div>
      <p>MeetingId: {meetingId}</p>
      <p>HLS state: {hlsState}</p>
      {isHlsPlayable && <p>Viewers will now be able to watch the stream.</p>}
      <button onClick={toggleMic}>Toggle Mic</button>
      <button onClick={toggleWebcam}>Toggle Webcam</button>
      <button onClick={_handleToggleHls}>
        {isHlsStarted ? "Stop Hls" : "Start Hls"}
      </button>
    </div>
  );
};

export default MediaControlsContainer;
masuk ke mode layar penuh

Keluar dari mode layar penuh

Wadah Kisi Peserta

Ini akan membuat semua peserta bergabung dari useMeeting kaitkan dan render satu per satu.Di sini kita akan menggunakan SingleParticipantContainer Streaming webcam digunakan untuk menampilkan satu peserta.
src/screens/speakerScreen/ParticipantsGridContainer.js

import { useMeeting } from "@videosdk.live/react-sdk";
import React, { useMemo } from "react";
import SingleParticipantContainer from "./SingleParticipantContainer";

const ParticipantsGridContainer = () => {
  const { participants } = useMeeting();

  const participantIds = useMemo(
    () => [...participants.keys()],
    [participants]
  );

  return (
    <div>
      {participantIds.map((participantId) => (
        <SingleParticipantContainer
          {...{ participantId, key: participantId }}
        />
      ))}
    </div>
  );
};

export default ParticipantsGridContainer;
masuk ke mode layar penuh

Keluar dari mode layar penuh

wadah aktor tunggal

Wadah ini akan didapat participantId Dapatkan streaming webcam dan info lainnya dari alat peraga useParticipant kait.
Itu akan merender aliran audio dan video dari peserta yang ID pesertanya disediakan oleh alat peraga.
src/screens/speakerScreen/SingleParticipantContainer.js

import { useParticipant } from "@videosdk.live/react-sdk";
import React, { useEffect, useMemo, useRef } from "react";
import ReactPlayer from "react-player";

const SingleParticipantContainer = ({ participantId }) => {
  const { micOn, micStream, isLocal, displayName, webcamStream, webcamOn } =
    useParticipant(participantId);

  const audioPlayer = useRef();

  const videoStream = useMemo(() => {
    if (webcamOn && webcamStream) {
      const mediaStream = new MediaStream();
      mediaStream.addTrack(webcamStream.track);
      return mediaStream;
    }
  }, [webcamStream, webcamOn]);

  useEffect(() => {
    if (!isLocal && audioPlayer.current && micOn && micStream) {
      const mediaStream = new MediaStream();
      mediaStream.addTrack(micStream.track);

      audioPlayer.current.srcObject = mediaStream;
      audioPlayer.current.play().catch((err) => {
        if (
          err.message ===
          "play() failed because the user didn't interact with the document first. https://goo.gl/xX8pDD"
        ) {
          console.error("audio" + err.message);
        }
      });
    } else {
      audioPlayer.current.srcObject = null;
    }
  }, [micStream, micOn, isLocal, participantId]);

  return (
    <div style={{ height: 200, width: 360, position: "relative" }}>
      <audio autoPlay playsInline controls={false} ref={audioPlayer} />
      <div
        style={{ position: "absolute", background: "#ffffffb3", padding: 8 }}
      >
        <p>Name: {displayName}</p>
        <p>Webcam: {webcamOn ? "on" : "off"}</p>
        <p>Mic: {micOn ? "on" : "off"}</p>
      </div>
      {webcamOn && (
        <ReactPlayer
          playsinline // very very imp prop
          pip={false}
          light={false}
          controls={false}
          muted={true}
          playing={true}
          url={videoStream}
          height={"100%"}
          width={"100%"}
          onError={(err) => {
            console.log(err, "participant video error");
          }}
        />
      )}
    </div>
  );
};

export default SingleParticipantContainer;
masuk ke mode layar penuh

Keluar dari mode layar penuh

Layar speaker kita sudah selesai, kita tidak bisa mulai coding ViewerScreenContainer

Langkah 4: Layar Pemirsa

Layar penonton akan diperuntukkan bagi peserta audiens yang akan menonton streaming HLS saat pembicara memulai streaming.
Seperti layar Speaker, layar ini juga akan mengalami proses inisialisasi.
src/screens/ViewerScreenContainer.js

import {
  MeetingConsumer,
  Constants,
  MeetingProvider,
  useMeeting,
} from "@videosdk.live/react-sdk";
import React, { useEffect, useMemo, useRef } from "react";
import Hls from "hls.js";
import { authToken } from "../api";

const HLSPlayer = () => {
  const { hlsUrls, hlsState } = useMeeting();

  const playerRef = useRef(null);

  const hlsPlaybackHlsUrl = useMemo(() => hlsUrls.playbackHlsUrl, [hlsUrls]);

  useEffect(() => {
    if (Hls.isSupported()) {
      const hls = new Hls({
        capLevelToPlayerSize: true,
        maxLoadingDelay: 4,
        minAutoBitrate: 0,
        autoStartLoad: true,
        defaultAudioCodec: "mp4a.40.2",
      });

      let player = document.querySelector("#hlsPlayer");

      hls.loadSource(hlsPlaybackHlsUrl);
      hls.attachMedia(player);
    } else {
      if (typeof playerRef.current?.play === "function") {
        playerRef.current.src = hlsPlaybackHlsUrl;
        playerRef.current.play();
      }
    }
  }, [hlsPlaybackHlsUrl, hlsState]);

  return (
    <video
      ref={playerRef}
      id="hlsPlayer"
      autoPlay
      controls
      style={{ width: "70%", height: "70%" }}
      playsInline
      playing
      onError={(err) => console.log(err, "hls video error")}
    ></video>
  );
};

const ViewerScreenContainer = ({ meetingId }) => {
  return (
    <MeetingProvider
      token={authToken}
      config={{ meetingId, name: "C.V. Raman", mode: "VIEWER" }}
      joinWithoutUserInteraction
    >
      <MeetingConsumer>
        {({ hlsState }) =>
          hlsState === Constants.hlsEvents.HLS_PLAYABLE ? (
            <HLSPlayer />
          ) : (
            <p>Waiting for host to start stream...</p>
          )
        }
      </MeetingConsumer>
    </MeetingProvider>
  );
};

export default ViewerScreenContainer;
masuk ke mode layar penuh

Keluar dari mode layar penuh

ViewerScreen kita sudah selesai, sekarang kita bisa menguji aplikasi kita.
npm run start

Output dari aplikasi langsung interaktif

Reaksi Langsung:

Kode sumber untuk aplikasi ini dapat ditemukan di GithubRepo ini.

apa berikutnya

Ini adalah contoh paling mendasar dari aplikasi streaming langsung interaktif menggunakan Video SDK, yang dapat Anda sesuaikan sesuka Anda.

  • Tambahkan lebih banyak CSS untuk membuat UI lebih interaktif
  • Tambahkan obrolan menggunakan PubSub
  • Terapkan mode perubahan, di mana kami dapat mengalihkan peserta mana pun dari audiens ke pembicara dan sebaliknya.
  • Anda juga dapat merujuk ke Aplikasi Prebuilt kami yang dibuat menggunakan paket React VideoSDK. Ini adalah repo Github.

Lebih banyak React resource

Kesimpulannya

Pada titik ini, kami telah berhasil membuat aplikasi React Interactive Live Streaming dengan Video SDK. Anda selalu dapat merujuk ke dokumentasi kami. Jika Anda ingin menambahkan fitur seperti pesan obrolan dan berbagi layar. Jika Anda memiliki pertanyaan tentang penerapannya, silakan hubungi kami melalui komunitas Discord kami.

Jangan lupa untuk membagikan artikel ini di Twitter .



rencana pengembangan website



metode pengembangan website

jelaskan beberapa rencana untuk pengembangan website, proses pengembangan website, kekuatan dan kelemahan bisnis pengembangan website
, jasa pengembangan website, tahap pengembangan website, biaya pengembangan website

#Tutorial #LangkahdemiLangkah #Buat #Aplikasi #Langsung #Menggunakan #React #dan #Video #SDK

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *