微信小程序接入腾讯云实时音视频TRTC----基本使用

前言:虽然说的有点乱,我觉得有必要说一下什么是音视频与整体开发需要些什么东西,因为当时我也是不知道这是啥?
.我的理解音视频就是类似微信视频通话的东西,以自己的角度来看,我与好友建立视频的步骤简单来讲就是我把我的视频信息推送到微信,微信处理发给我好友,然后我再将好友的视频信息拉下来,我们就可以实时视频了.
开发角度看需要的主要用户信息就是:房间号/adkAppId(腾讯云生成后一般写死)/userSig(签名,后端返回)/userId(手机号/账号之类)
开发流程以我们的业务来说有两条线,

  • 一是登录页收集需要的信息>实时刷新页面看有无房间>无房间可以创建房间,后台生成房间号进入房间>获取后台签名接口>向腾讯云推拉流>获取后台房主/开房人的信息以便可以向后台发送踢人操作等等>静音关视频退房间等零碎操作,就看各自业务
  • 二是加入已有房间的,也是需要登录拿信息>进房间>推拉信息

如果按照腾讯云demo的话是有人退出,后面的用户会往上排,但如果你跟我一样需要写死例如5个位置,并且房主在第一位放大的.可以借鉴如下操作:1.写好固定的四位远端对象,并给一个常量判断有无人,例如isEmpty: true,在接收完远端后就遍历判断有位置就储存数据,并改为false.2.接收完远端与本地流后遍历匹配与房主的信息,例如我是拿userId匹配的,如果符合,给房主加样式order:-999就会排到第一位了.

一.在腾讯云申请账号,拿到adkAppID

二.下载腾讯云demo

在这里插入图片描述

三.分析demo

  • 跑通Demo与快速集成有官方介绍,以下记录自己理解.

1.目录分析

在这里插入图片描述

2.多人会议分析

  • metting>room文件夹
  • 里面主要有<live-pusher><live-player>两个组件,官网也有讲,这个是基于微信原生组件开发的,所以在微信开放文档可以找到相应解释.
  • <live-pusher>推流,指的是把采集阶段封包好的内容传输到服务器的过程。
  • <live-player>拉流是指服务器已有直播内容,用指定地址进行拉取的过程。
  • 用官方例子来解释就是,比方是一个老师与三名学生的教学直播,你是这名老师,那么推流会把你的视频信息通过url推送(this.TRTC.getPusherInstance().start())服务器,同时会将三名学生的数据拉下来.同样要是你是学生,那你也会推送自己的数据,拉下一名老师与两位同学的信息.

room.wxml

<view class="template-grid"><view class="column-layout"><view class="column-1"><view id="grid-container-id" class="grid-container"><view class="view-container pusher-container {{playerList.length===0? 'fullscreen':''}} {{playerList.length===1? 'one-player':''}}"><!-- 1.传入一个推流地址,然后调用start --><!-- 2.推流展示自己 --><!-- 属性:url:推流地址。目前仅支持 rtmp 格式mode:SD(标清), HD(高清), FHD(超清), RTC(实时通话)autopush:自动推流enable-camera:开启摄像头enable-mic:开启或关闭麦克风muted:是否静音enable-agc:是否开启音频自动增益enable-ans:是否开启音频噪声抑制auto-focus:自动聚集zoom:调整焦距min-bitrate:最小码率max-bitrate:最大码率video-width:上推的视频流的分辨率宽度video-height:上推的视频流的分辨率高度beauty:美颜,取值范围 0-90 表示关闭whiteness:美白,取值范围 0-90 表示关闭orientation:画面方向aspect:宽高比,可选值有 3:4, 9:16device-position:前置或后置,值为front, backremote-mirror:同 mirror 属性,后续 mirror 将废弃local-mirror:控制本地预览画面是否镜像background-mute:进入后台时是否静音(已废弃,默认退后台静音)audio-quality:高音质(48KHz)或低音质(16KHz),值为high, lowaudio-volume-type:音量类型audio-reverb-type:音频混响类型waiting-image:进入后台时推流的等待画面beauty-style:设置美颜类型filter:设置色彩滤镜bindstatechange:状态变化事件,detail = {code}bindnetstatus:网络状态通知,detail = {info}binderror:渲染错误事件,detail = {errMsg, errCode}bindbgmstart:背景音开始播放时触发bindbgmprogress:背景音进度变化时触发,detail = {progress, duration}bindbgmcomplete:背景音播放完成时触发bindaudiovolumenotify:返回麦克风采集的音量大小--><live-pusherclass="pusher"url="{{pusher.url}}"mode="{{pusher.mode}}"autopush="{{pusher.autopush}}"enable-camera="{{pusher.enableCamera}}"enable-mic="{{pusher.enableMic}}"muted="{{!pusher.enableMic}}"enable-agc="{{pusher.enableAgc}}"enable-ans="{{pusher.enableAns}}"enable-ear-monitor="{{pusher.enableEarMonitor}}"auto-focus="{{pusher.enableAutoFocus}}"zoom="{{pusher.enableZoom}}"min-bitrate="{{pusher.minBitrate}}"max-bitrate="{{pusher.maxBitrate}}"video-width="{{pusher.videoWidth}}"video-height="{{pusher.videoHeight}}"beauty="{{pusher.beautyLevel}}"whiteness="{{pusher.whitenessLevel}}"orientation="{{pusher.videoOrientation}}"aspect="{{pusher.videoAspect}}"device-position="{{pusher.frontCamera}}"remote-mirror="{{pusher.enableRemoteMirror}}"local-mirror="{{pusher.localMirror}}"background-mute="{{pusher.enableBackgroundMute}}"audio-quality="{{pusher.audioQuality}}"audio-volume-type="{{pusher.audioVolumeType}}"audio-reverb-type="{{pusher.audioReverbType}}"waiting-image="{{pusher.waitingImage}}"debug="{{debug}}"beauty-style="{{pusher.beautyStyle}}"filter="{{pusher.filter}}"bindstatechange="_pusherStateChangeHandler"bindnetstatus="_pusherNetStatusHandler"binderror="_pusherErrorHandler"bindbgmstart="_pusherBGMStartHandler"bindbgmprogress="_pusherBGMProgressHandler"bindbgmcomplete="_pusherBGMCompleteHandler"bindaudiovolumenotify="_pusherAudioVolumeNotify"/><view class="no-video" wx:if="{{!pusher.enableCamera}}"><image class="image" src="../../../static/images/mute-camera-white.png"></image></view><!-- 左下角话筒样式 --><view class="no-audio" wx:if="{{!pusher.enableMic}}"><image class="image" src="../../../static/images/mute-mic-white.png"></image></view><view class="audio-volume" wx:if="{{pusher.enableMic}}"><image class="image" src="../../../static/images/micro-open.png"></image><view class="audio-active" style="height:{{pusher.volume}}%"><image class="image" src="../../../static/images/audio-active.png"></image></view></view></view><!-- playerList决定房间有几个人的数组 --><view wx:for="{{playerList}}"wx:key="streamID"class="view-container player-container {{playerList.length===1? 'one-player':''}}"id="{{'player-'+item.streamID}}"data-userid="{{item.userID}}"data-streamtype="{{item.streamType}}"bindtap="_doubleTabToggleFullscreen"><!-- 1.可以设置autoplay,检测到有推流链接就自动拉流 --><!-- 2.拉流展示别人 --><!-- 属性:data-streamid:状态机需要区分标签绑定的 handler 是从哪一个 player 调用的src:音视频地址。目前仅支持 flv, rtmp 格式mode:live(直播),RTC(实时通话,该模式时延更低)autoplay:自动播放mute-audio:应该是静音mute-video:应该是静音orientation:画面方向,vertical(竖直),horizontal(水平)object-fit:填充模式,可选值有 contain(图像长边填满屏幕,短边区域会被填充⿊⾊),fillCrop(图像铺满屏幕,超出显示区域的部分将被截掉)background-mute:进入后台时是否静音(已废弃,默认退后台静音)min-cache:最小缓冲区,单位s(RTC 模式推荐 0.2s)max-cache:最大缓冲区sound-mode:声音输出方式,speaker(扬声器),ear(听筒)auto-pause-if-navigate:当跳转到本小程序的其他页面时,是否自动暂停本页面的实时音视频播放auto-pause-if-open-native:当跳转到其它微信原生页面时,是否自动暂停本页面的实时音视频播放bindstatechange:播放状态变化事件,detail = {code}bindfullscreenchange:全屏变化事件,detail = {direction, fullScreen}bindnetstatus:网络状态通知,detail = {info}bindaudiovolumenotify:播放音量大小通知,detail = {}--><live-playerclass="player"id="{{item.id}}"data-userid="{{item.userID}}"data-streamid="{{item.streamID}}"data-streamtype="{{item.streamType}}"src= "{{item.src}}"mode= "RTC"autoplay= "{{item.autoplay}}"mute-audio= "{{item.muteAudio}}"mute-video= "{{item.muteVideo}}"orientation= "{{item.orientation}}"object-fit= "{{item.objectFit}}"background-mute= "{{item.enableBackgroundMute}}"min-cache= "{{item.minCache}}"max-cache= "{{item.maxCache}}"sound-mode= "{{item.soundMode}}"enable-recv-message= "{{item.enableRecvMessage}}"auto-pause-if-navigate= "{{item.autoPauseIfNavigate}}"auto-pause-if-open-native= "{{item.autoPauseIfOpenNative}}"debug="{{debug}}"bindstatechange="_playerStateChange"bindfullscreenchange="_playerFullscreenChange"bindnetstatus="_playerNetStatus"bindaudiovolumenotify="_playerAudioVolumeNotify"/><view class="no-video" wx:if="{{item.muteVideo}}"><image class="image" src="../../../static/images/display-pause-white.png"></image><view class="text"><p>{{item.userID}}</p></view></view><view class="no-video" wx:if="{{!item.hasVideo && !item.muteVideo}}"><image class="image" src="../../../static/images/mute-camera-white.png"></image><view class="text"><p>{{item.userID}}</p></view><view class="text"><p>对方摄像头未打开</p></view></view><view class="no-audio" wx:if="{{!item.hasAudio}}"><image class="image" src="../../../static/images/mute-mic-white.png"></image></view><view class="audio-volume" wx:if="{{item.hasAudio}}"><image class="image" src="../../../static/images/micro-open.png"></image><view class="audio-active" style="height:{{item.volume}}%"><image class="image" src="../../../static/images/audio-active.png"></image></view></view><view class="sub-box"><image class="audio-image" bindtap="_mutePlayerAudio" data-value="{{item}}" src="{{item.muteAudio? '../../../static/images/mute-mic-white.png': '../../../static/images/micro-open.png'}} "></image><image class="audio-image" bindtap="_mutePlayerVideo" data-value="{{item}}" src="{{item.muteVideo? '../../../static/images/mute-camera-white.png': '../../../static/images/camera.png'}} "></image></view></view></view></view><!-- 底部工具栏 --><view class="bottom-box"><view class="bottom-btns"><view class="btn-normal" bindtap="_pusherAudioHandler"><image class="btn-image" src="{{pusher.enableMic? '../../../static/images/audio-true.png': '../../../static/images/audio-false.png'}} "></image></view><view class="btn-normal" bindtap="_pusherVideoHandler"><image class="btn-image" src="{{pusher.enableCamera? '../../../static/images/camera-true.png': '../../../static/images/camera-false.png'}} "></image></view><view class="btn-normal" data-key="beautyLevel" data-value="9|0" data-value-type="number" bindtap="_setPusherBeautyHandle"><image class="btn-image" src="{{pusher.beautyLevel == 9 ? '../../../static/images/beauty-true.png': '../../../static/images/beauty-false.png'}} "></image></view><view class="btn-normal" bindtap="_switchMemberListPanel"><image class="btn-image" src="../../../static/images/list.png"></image></view><view class="btn-hangup" bindtap="_hangUp"><image class="btn-image" src="../../../static/images/hangup.png"></image></view></view></view><!-- 成员列表 --><view class="panel memberlist-panel" wx:if="{{show_memberList}}"><view bindtap="_handleClose" class='close-btn'>X</view><view class="panel-header">成员列表</view><view class="panel-body"><view class="panel-tips" wx:if="{{playerList.length === 0}}">暂无成员</view><scroll-view class="scroll-container" scroll-y="true"><view class="member-item" wx:for="{{playerList}}" wx:key="streamID" ><view class="member-id">{{item.userID}}</view><view class="member-btns"><button class="btn" hover-class="btn-hover"><image class="audio-image" bindtap="_mutePlayerAudio" data-value="{{item}}" src="{{item.muteAudio? '../../../static/images/mute-mic-white.png': '../../../static/images/micro-open.png'}} "></image></button><button class="btn" hover-class="btn-hover"><image class="audio-image" bindtap="_mutePlayerVideo" data-value="{{item}}" src="{{item.muteVideo? '../../../static/images/mute-camera-white.png': '../../../static/images/camera.png'}} "></image></button></view></view></scroll-view></view></view></view></view>

room.js

import TRTC from '../../../static/trtc-wx'Page({data: {_rtcConfig: {sdkAppID: '', // 必要参数 开通实时音视频服务创建应用后分配的 sdkAppIDuserID: '', // 必要参数 用户 ID 可以由您的帐号系统指定userSig: '', // 必要参数 身份签名,相当于登录密码的作用},pusher: null,//推流数据playerList: [],//拉流数据show_memberList: false,//控制成员列表显示隐藏localAudio: false,localVideo: false},/*** 生命周期函数--监听页面加载*/onLoad(options) {console.log('room onload', options)wx.setKeepScreenOn({keepScreenOn: true,})// 在生命周期中新建一个TRTC的类this.TRTC = new TRTC(this)// 将String 类型的 true false 转换成 booleanObject.getOwnPropertyNames(options).forEach((key) => {if (options[key] === 'true') {options[key] = true}if (options[key] === 'false') {options[key] = false}})this.init(options)this.bindTRTCRoomEvent()this.enterRoom({ roomID: options.roomID })},onReady() {console.log('room ready')},onUnload() {console.log('room unload')},/*** @method 初始化*/init(options) {// pusher 初始化参数const pusherConfig = {beautyLevel: 9,}// pusherConfig 是初始化参数,返回初始化后的推流状态,需要与模板相结合,const pusher = this.TRTC.createPusher(pusherConfig)this.setData({_rtcConfig: {userID: options.userID,sdkAppID: options.sdkAppID,userSig: options.userSig,},pusher: pusher.pusherAttributes,//创建推流实例localAudio: options.localAudio,localVideo: options.localVideo})console.log(this.data.pusher,123);},/*** @method 进入TRTC房间,开始推流*/enterRoom(options) {const roomID = options.roomID//必填,您要进入的房间号,如该房间不存在,系统会为您自动创建const config =  Object.assign(this.data._rtcConfig, { roomID })this.setData({pusher: this.TRTC.enterRoom(config),}, () => {this.TRTC.getPusherInstance().start() // 开始推流})},/*** @method 结束音视频通话,重置所有状态并同步到页面中,防止下次谨防发生状态的混乱*/exitRoom() {const result = this.TRTC.exitRoom()this.setData({pusher: result.pusher,playerList: result.playerList,})},// 设置 pusher 属性//需要变更 live-pusher 标签上 enable-mic 和 enable-camera 的属性,您可以通过调用 setPusherAttributes 对状态机中管理的推流状态进行改变,会返回给您更新后的状态值,更新到页面中。setPusherAttributesHandler(options) {this.setData({pusher: this.TRTC.setPusherAttributes(options),})},// 设置某个 player 属性setPlayerAttributesHandler(player, options) {this.setData({playerList: this.TRTC.setPlayerAttributes(player.streamID, options),})},// 事件监听bindTRTCRoomEvent() {const TRTC_EVENT = this.TRTC.EVENT// 初始化事件订阅this.TRTC.on(TRTC_EVENT.LOCAL_JOIN, (event) => {console.log('* room LOCAL_JOIN', event)if (this.data.localVideo) {this.setPusherAttributesHandler({ enableCamera: true })// 进房默认开启视频上行}if (this.data.localAudio) {this.setPusherAttributesHandler({ enableMic: true })//进房默认开启音频上行}})this.TRTC.on(TRTC_EVENT.LOCAL_LEAVE, (event) => {console.log('* room LOCAL_LEAVE', event)})this.TRTC.on(TRTC_EVENT.ERROR, (event) => {console.log('* room ERROR', event)})this.TRTC.on(TRTC_EVENT.REMOTE_USER_JOIN, (event) => {console.log('* room REMOTE_USER_JOIN', event)const { userID } = event.datawx.showToast({title: `${userID} 进入了房间`,icon: 'none',duration: 2000,})})// 远端用户退出this.TRTC.on(TRTC_EVENT.REMOTE_USER_LEAVE, (event) => {console.log('* room REMOTE_USER_LEAVE', event)const { userID, playerList } = event.datathis.setData({playerList: playerList})wx.showToast({title: `${userID} 离开了房间`,icon: 'none',duration: 2000,})})// 远端用户推送视频this.TRTC.on(TRTC_EVENT.REMOTE_VIDEO_ADD, (event) => {console.log('* room REMOTE_VIDEO_ADD',  event)const { player } = event.data// 开始播放远端的视频流,默认是不播放的this.setPlayerAttributesHandler(player, { muteVideo: false })})// 远端用户取消推送视频this.TRTC.on(TRTC_EVENT.REMOTE_VIDEO_REMOVE, (event) => {console.log('* room REMOTE_VIDEO_REMOVE', event)const { player } = event.datathis.setPlayerAttributesHandler(player, { muteVideo: true })})// 远端用户推送音频this.TRTC.on(TRTC_EVENT.REMOTE_AUDIO_ADD, (event) => {console.log('* room REMOTE_AUDIO_ADD', event)const { player } = event.datathis.setPlayerAttributesHandler(player, { muteAudio: false })})// 远端用户取消推送音频this.TRTC.on(TRTC_EVENT.REMOTE_AUDIO_REMOVE, (event) => {console.log('* room REMOTE_AUDIO_REMOVE', event)const { player } = event.datathis.setPlayerAttributesHandler(player, { muteAudio: true })})this.TRTC.on(TRTC_EVENT.REMOTE_AUDIO_VOLUME_UPDATE, (event) => {console.log('* room REMOTE_AUDIO_VOLUME_UPDATE', event)const { playerList } = event.datathis.setData({playerList: playerList})})this.TRTC.on(TRTC_EVENT.LOCAL_AUDIO_VOLUME_UPDATE, (event) => {// console.log('* room LOCAL_AUDIO_VOLUME_UPDATE', event)const { pusher } = event.datathis.setData({pusher: pusher})})},// 是否订阅某一个player Audio_mutePlayerAudio(event) {const player = event.currentTarget.dataset.valueif (player.hasAudio && player.muteAudio) {this.setPlayerAttributesHandler(player, { muteAudio: false })return}if (player.hasAudio && !player.muteAudio) {this.setPlayerAttributesHandler(player, { muteAudio: true })return}},// 订阅 / 取消订阅某一个player Audio_mutePlayerVideo(event) {const player = event.currentTarget.dataset.valueif (player.hasVideo && player.muteVideo) {this.setPlayerAttributesHandler(player, { muteVideo: false })return}if (player.hasVideo && !player.muteVideo) {this.setPlayerAttributesHandler(player, { muteVideo: true })return}},// 挂断退出房间_hangUp() {this.exitRoom()wx.navigateBack({delta: 1,})},// 设置美颜_setPusherBeautyHandle() {const  beautyLevel = this.data.pusher.beautyLevel === 0 ? 9 : 0this.setPusherAttributesHandler({ beautyLevel })},//开启/关闭麦克风_pusherAudioHandler() {if (this.data.pusher.enableMic) {this.setPusherAttributesHandler({ enableMic: false })} else {this.setPusherAttributesHandler({ enableMic: true })}},// 开启/关闭摄像头_pusherVideoHandler() {if (this.data.pusher.enableCamera) {this.setPusherAttributesHandler({ enableCamera: false })} else {this.setPusherAttributesHandler({ enableCamera: true })}},/*** @method 控制显示隐藏成员列表*/_switchMemberListPanel() {this.setData({show_memberList: true})},_handleClose() {this.setData({show_memberList: false})},// 请保持跟 wxml 中绑定的事件名称一致// 推流/*** @method 状态变化事件,detail = {code}*/_pusherStateChangeHandler(event) {this.TRTC.pusherEventHandler(event)},/*** @method 网络状态通知,detail = {info}*/_pusherNetStatusHandler(event) {this.TRTC.pusherNetStatusHandler(event)},/*** @method 渲染错误事件,detail = {errMsg, errCode}*/_pusherErrorHandler(event) {this.TRTC.pusherErrorHandler(event)},/*** @method 背景音开始播放时触发*/_pusherBGMStartHandler(event) {this.TRTC.pusherBGMStartHandler(event)},/*** @method 背景音进度变化时触发,detail = {progress, duration}*/_pusherBGMProgressHandler(event) {this.TRTC.pusherBGMProgressHandler(event)},/*** @method 背景音播放完成时触发*/_pusherBGMCompleteHandler(event) {this.TRTC.pusherBGMCompleteHandler(event)},/*** @method 返回麦克风采集的音量大小*/_pusherAudioVolumeNotify(event) {this.TRTC.pusherAudioVolumeNotify(event)},// 拉流/*** @method 播放状态变化事件,detail = {code}*/_playerStateChange(event) {this.TRTC.playerEventHandler(event)},/*** @method 全屏变化事件,detail = {direction, fullScreen}*/_playerFullscreenChange(event) {this.TRTC.playerFullscreenChange(event)},/*** @method 网络状态通知,detail = {info}*/_playerNetStatus(event) {this.TRTC.playerNetStatus(event)},/*** @method 播放音量大小通知,detail = {}*/_playerAudioVolumeNotify(event) {this.TRTC.playerAudioVolumeNotify(event)},
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33447.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【新知实验室】手把手实现腾讯云音视频应用

腾讯云音视频是什么&#xff1f; 腾讯云音视频&#xff08;TRTC&#xff09;提供一站式视频解决方案&#xff0c;包括点播直播、实时视频通话、短视频等视频服务&#xff0c;广泛应用于在线视频、电商、游戏直播、在线教育等场景。实时音视频基于腾讯21年来在网络与音视频技术上…

TBS腾讯浏览服务的SDK接入

Share Only 版 引入依赖库compile com.jakewharton:butterknife:7.0.1&#xff0c;与项目本身无关&#xff0c;不喜欢findViewById而已&#xff0c;这里有个小坑&#xff0c;最新版本的butterknife结合插件使用可能会导致findViewById或者onClick绑定失败…将shareOnly版本的j…

web端对接语音通话(腾讯云)

实时音视频 实时语音通话(Web) - 场景实践 - 文档中心 - 腾讯云 按照要求注册腾讯云账号&#xff0c;跑通demo 1、集成TRTCCalling组件 // npm方式安装 npm install trtc-js-sdk --save npm install tim-js-sdk --save npm install tsignaling --save npm install trtc-calli…

新知实验室基于腾讯云实时音视频WEB端实验

腾讯实时音视频&#xff08;Tencent Real-Time Communication&#xff0c;TRTC&#xff09;主要用于互动直播和多人音视频。支持低延时直播观看、实时录制、屏幕分享、美颜特效、立体声等能力&#xff0c;还能和直播 CDN 无缝对接&#xff0c;适用于互动连麦、跨房 PK、语音电台…

腾讯云IM-SDK集成(web端)完成IM登录

一脸懵逼的看着腾讯云的文档&#xff0c;完成了所谓的采坑之旅 &#xff08;1&#xff09;很多人估计公司也需要用到聊天&#xff0c;以及音视频的功能&#xff0c;那么作为萌新的我&#xff0c;当然也是一来公司便得知需要用到这个技术&#xff0c;当时我是懵逼的&#xff0c…

[Web端接入经验分享] 腾讯云即时通信TIM、实时音视频TRTC

[Web端接入经验分享] 腾讯云即时通信TIM、实时音视频TRTC 即时通信TIM官网地址 即时通信TIM SDK API文档地址 实时音视频TRTC官网地址 实时音视频TRTC SDK API文档地址 概念与可能造成疑惑的问题 SDK 是什么&#xff1f; Github 地址 腾讯云将底层与后台代码封装混淆之后生成…

腾讯云部署清华大学ChatGLM-6B实战

简介&#xff08;来自官方&#xff09; ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&#xff08;INT4 量化级别…

Chat GPT的到来,对普通人来说是福还是祸?

AI机器人的功能可能比我们想象的更大&#xff0c;可以创作也可以模拟人类的语言行为&#xff0c;与人类进行自然的聊天交流。同时已经开始代替人类做一些基础的工作&#xff0c;未来可能代替更多的人类工作。人工智能的出现也值得我们人类自己深思&#xff0c;如果我们的工作被…

使用Mendeley和CvtCNKI进行中英文参考文献引用管理(含硕博论文)

在写学术论文和学位论文的时候&#xff0c;往往需要引用大量参考文献&#xff0c;以前博主的做法都是边写论文边把相关参考文献以word批注的形式列在侧边栏&#xff08;因为后面修改的时候可能还会有所变动&#xff09;&#xff0c;等论文定稿之后再手动对引用的相关参考文献编…

关于硕士毕业论文中会议conference的参考文献格式修正GB7714-87#outputstyle#endnote

1问题描述 在硕士毕业论文中需要按照GB7714-87的参考文献引用标准对会议论文进行参考文献格式规范 GB7714-87中的要求如图&#xff1a;&#xff08;因为我们文中引用的论文一般 不会是论文集&#xff0c;而是论文集合中析出的一篇文章&#xff0c;so这个格式非常复杂&#xff…

IEEE Transactions模板中参考文献作者缩写、期刊名缩写

IEEE Transactions模板中参考文献作者缩写、期刊名缩写 本文章记录如何在IEEE Transactions的模板中&#xff0c;解决参考文献的作者缩写、期刊名字缩写的问题。 目录 IEEE Transactions模板中参考文献作者缩写、期刊名缩写0.上效果图1.如何设置.bib文件2.如何作者名字的缩写3…

ForeFront Chat 免费版GPT-4来了!

Forefront Chat简介 近日&#xff0c;Forefront AI 正式推出 Forefront Chat&#xff0c; 允许用户免费体验GPT-4 的强大功能 。 Forefront AI 在 Twitter 上表示&#xff1a;“今天&#xff0c;我们发布了 Forefront Chat 的免费 alpha 版&#xff0c;希望带来更出色的 ChatG…

女网红靠GPT-4交1000+男友,聊天按分钟收费,一周收入50万

点击关注公众号&#xff1a;互联网架构师&#xff0c;后台回复 2T获取2TB学习资源&#xff01; 上一篇&#xff1a;Alibaba开源内网高并发编程手册.pdf 编辑&#xff1a;鱼羊 转自&#xff1a;量子位 | 公众号 QbitAI 注意看&#xff0c;这个女人叫卡琳&#xff0c;靠着GPT-4&a…

熵在计算机方向的应用(浅谈信息熵)

信息是一个很抽象的东西&#xff0c;吃苹果的概率是二分之一&#xff0c;吃香蕉的概率是二分之一&#xff0c;这里面包含了多少信息量&#xff0c;由于信息很抽象&#xff0c;无法直观的量化。 信息熵原先是热力学中的名词&#xff0c;原先含义是表示分子状态的混乱程度。 香…

中文信息熵的计算

摘要&#xff1a;本文介绍了利用基于词的一元模型、二元模型、三元模型估计中文信息熵的计算方法&#xff0c;并通过中文维基百科语料得到三种统计语言模型计算得到的中文信息熵分别为13.711比特/词、6.402比特/词、1.508比特/词。 关键词&#xff1a;信息熵&#xff1b; 统计…

信息与熵值的计算

原文地址https://blog.csdn.net/kuang_liu/article/details/21469553 1. 什么是信息&#xff1f; 信息的定义涉及概率论中的随机事件概率&#xff0c;如果待分类事物可能划分在多个分类之中&#xff0c;则符号 Xi 的信息定义为&#xff1a; 其中 p(xi) 是选择该分类的概率。&…

信息熵的数值计算公式

1948年&#xff0c;信息论之父 C. E. Shannon &#xff08;香农&#xff09;借鉴了热力学的概念&#xff0c;把信息中排除了冗余后的平均信息量称为“信息熵”&#xff0c;并给出了计算信息熵的数学表达式。 信息熵介绍 一元变量信息熵&#xff1a; 式中对数一般取2为底&#…

从熵到相位传递熵,附matlba和python代码

先来一张图&#xff0c;预览一下最近为了整明白相位传递熵所要恶补的知识叭&#xff0c;泪目了&#xff1a;( 好吧&#xff0c;废话不多说&#xff0c;直接开始吧&#xff01; 一. 熵是什么&#xff1f; 1、香浓熵 2、联合熵、条件熵和互信息 3、传递熵 二、直方图 1、连续随…

信息熵计算权重

信息熵理论及应用 1948年美国数学家香农&#xff08;shanonc.E&#xff09;为解决信息的度量问题提出了信息熵的概念。信息熵是信息论中用来刻画信息无需度的一个量&#xff0c;熵值越大&#xff0c;表示信息的无序化程度越高&#xff0c;相对应的信息效率越高 计算过程 建立…

熵的推导与计算

一、信息熵 熵 (entropy) 这一词最初来源于热力学。1948年&#xff0c;克劳德爱尔伍德香农将热力学中的熵引入信息论&#xff0c;所以也被称为香农熵 (Shannon entropy)&#xff0c;信息熵 (information entropy)。本文只讨论信息熵。首先&#xff0c;我们先来理解一下信息这个…