整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

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浏览器打开看看这小小效果了。打开后鼠标移到视频上点击播放按钮就可以播放了