This commit is contained in:
parent
c5086bcf1a
commit
0df7896ee5
|
|
@ -14,6 +14,7 @@ import { storage } from '@/utils';
|
||||||
import { GetRoomFile, PostRoomFile, DeleteRoomFile, GetRoomUpFileurl, GetRoomFileDwUrl } from '@/api/Meeting';
|
import { GetRoomFile, PostRoomFile, DeleteRoomFile, GetRoomUpFileurl, GetRoomFileDwUrl } from '@/api/Meeting';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import ImageUrl from '@/utils/package/imageUrl'
|
import ImageUrl from '@/utils/package/imageUrl'
|
||||||
|
import agora from '@/utils/package/agora'
|
||||||
const { Column } = Table
|
const { Column } = Table
|
||||||
const Meeting: React.FC = () => {
|
const Meeting: React.FC = () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
@ -118,7 +119,7 @@ const Meeting: React.FC = () => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isInit) {
|
if (isInit) {
|
||||||
setUser(JSON.parse(storage.getItem('user') as string))
|
setUser(JSON.parse(storage.getItem('user') as string))
|
||||||
// window.agora.setJoinChannel({
|
// agora.setJoinChannel({
|
||||||
// channelId: state.channelId,
|
// channelId: state.channelId,
|
||||||
// userid: user.userName,
|
// userid: user.userName,
|
||||||
// token: state.token,
|
// token: state.token,
|
||||||
|
|
@ -153,49 +154,49 @@ const Meeting: React.FC = () => {
|
||||||
setIsSharedScreenModal(true)
|
setIsSharedScreenModal(true)
|
||||||
break;
|
break;
|
||||||
case '停止共享':
|
case '停止共享':
|
||||||
window.agora.stopScreenCapture()
|
agora.stopScreenCapture()
|
||||||
footerListTemplate[itemIndex][rowIndex].title = '共享屏幕'
|
footerListTemplate[itemIndex][rowIndex].title = '共享屏幕'
|
||||||
break;
|
break;
|
||||||
case '关闭声音':
|
case '关闭声音':
|
||||||
footerListTemplate[itemIndex][rowIndex].title = '开启声音'
|
footerListTemplate[itemIndex][rowIndex].title = '开启声音'
|
||||||
footerListTemplate[itemIndex][rowIndex].active = true
|
footerListTemplate[itemIndex][rowIndex].active = true
|
||||||
setFooterList(footerListTemplate)
|
setFooterList(footerListTemplate)
|
||||||
window.agora.muteLocalAudioStream(true)
|
agora.muteLocalAudioStream(true)
|
||||||
break;
|
break;
|
||||||
case '开启声音':
|
case '开启声音':
|
||||||
footerListTemplate[itemIndex][rowIndex].title = '关闭声音'
|
footerListTemplate[itemIndex][rowIndex].title = '关闭声音'
|
||||||
footerListTemplate[itemIndex][rowIndex].active = false
|
footerListTemplate[itemIndex][rowIndex].active = false
|
||||||
setFooterList(footerListTemplate)
|
setFooterList(footerListTemplate)
|
||||||
window.agora.muteLocalAudioStream(false)
|
agora.muteLocalAudioStream(false)
|
||||||
break;
|
break;
|
||||||
case '关闭视频':
|
case '关闭视频':
|
||||||
footerListTemplate[itemIndex][rowIndex].title = '开启视频'
|
footerListTemplate[itemIndex][rowIndex].title = '开启视频'
|
||||||
footerListTemplate[itemIndex][rowIndex].active = true
|
footerListTemplate[itemIndex][rowIndex].active = true
|
||||||
setFooterList(footerListTemplate)
|
setFooterList(footerListTemplate)
|
||||||
window.agora.muteLocalVideoStream(true)
|
agora.muteLocalVideoStream(true)
|
||||||
break;
|
break;
|
||||||
case '开启视频':
|
case '开启视频':
|
||||||
footerListTemplate[itemIndex][rowIndex].title = '关闭视频'
|
footerListTemplate[itemIndex][rowIndex].title = '关闭视频'
|
||||||
footerListTemplate[itemIndex][rowIndex].active = false
|
footerListTemplate[itemIndex][rowIndex].active = false
|
||||||
setFooterList(footerListTemplate)
|
setFooterList(footerListTemplate)
|
||||||
window.agora.muteLocalVideoStream(false)
|
agora.muteLocalVideoStream(false)
|
||||||
break;
|
break;
|
||||||
case '设置向导':
|
case '设置向导':
|
||||||
getAudioMediaList()
|
getAudioMediaList()
|
||||||
window.agora.startRecordingDeviceTest(200)
|
agora.startRecordingDeviceTest(200)
|
||||||
setIsStupWizard(true)
|
setIsStupWizard(true)
|
||||||
break;
|
break;
|
||||||
case '录制':
|
case '录制':
|
||||||
footerListTemplate[itemIndex][rowIndex].title = '录制中'
|
footerListTemplate[itemIndex][rowIndex].title = '录制中'
|
||||||
footerListTemplate[itemIndex][rowIndex].active = true
|
footerListTemplate[itemIndex][rowIndex].active = true
|
||||||
setFooterList(footerListTemplate)
|
setFooterList(footerListTemplate)
|
||||||
window.agora.startRecording()
|
agora.startRecording()
|
||||||
break;
|
break;
|
||||||
case '录制中':
|
case '录制中':
|
||||||
footerListTemplate[itemIndex][rowIndex].title = '录制'
|
footerListTemplate[itemIndex][rowIndex].title = '录制'
|
||||||
footerListTemplate[itemIndex][rowIndex].active = false
|
footerListTemplate[itemIndex][rowIndex].active = false
|
||||||
setFooterList(footerListTemplate)
|
setFooterList(footerListTemplate)
|
||||||
window.agora.stopRecording()
|
agora.stopRecording()
|
||||||
break;
|
break;
|
||||||
case '共享文件':
|
case '共享文件':
|
||||||
await getRoomFile()
|
await getRoomFile()
|
||||||
|
|
@ -213,8 +214,8 @@ const Meeting: React.FC = () => {
|
||||||
const footerListTemplate = [...footerList]
|
const footerListTemplate = [...footerList]
|
||||||
footerListTemplate[footerListIndex.itemIndex][footerListIndex.rowIndex].title = '停止共享'
|
footerListTemplate[footerListIndex.itemIndex][footerListIndex.rowIndex].title = '停止共享'
|
||||||
setIsSharedScreenModal(false)
|
setIsSharedScreenModal(false)
|
||||||
window.agora.setDesktopCapturerVideo(sharedScreenItem)
|
agora.setDesktopCapturerVideo(sharedScreenItem)
|
||||||
setVideoID(window.agora.getVideoId())
|
setVideoID(agora.getVideoId())
|
||||||
} else {
|
} else {
|
||||||
message.error('请选择应用!')
|
message.error('请选择应用!')
|
||||||
}
|
}
|
||||||
|
|
@ -222,7 +223,7 @@ const Meeting: React.FC = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const getDesktopCapturerVideo = (): void => {
|
const getDesktopCapturerVideo = (): void => {
|
||||||
window.agora.getDesktopCapturerVideo().then((res: any) => {
|
agora.getDesktopCapturerVideo().then((res: any) => {
|
||||||
if (sharedScreenList.length !== res.length) {
|
if (sharedScreenList.length !== res.length) {
|
||||||
res.forEach((item: any) => {
|
res.forEach((item: any) => {
|
||||||
if (item.thumbImage.buffer) {
|
if (item.thumbImage.buffer) {
|
||||||
|
|
@ -238,7 +239,7 @@ const Meeting: React.FC = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const getAudioMediaList = (): void => {
|
const getAudioMediaList = (): void => {
|
||||||
const { currentDevices, currentDevice, currentVolume } = window.agora.getAudioMediaList();
|
const { currentDevices, currentDevice, currentVolume } = agora.getAudioMediaList();
|
||||||
setAudioDeviceManager({
|
setAudioDeviceManager({
|
||||||
currentDevices: currentDevices.map((row: any) => {
|
currentDevices: currentDevices.map((row: any) => {
|
||||||
return {
|
return {
|
||||||
|
|
@ -404,13 +405,13 @@ const Meeting: React.FC = () => {
|
||||||
content={
|
content={
|
||||||
<div className='meetingContentFooterPopover'>
|
<div className='meetingContentFooterPopover'>
|
||||||
<div onClick={() => {
|
<div onClick={() => {
|
||||||
window.agora.leaveChannel()
|
agora.leaveChannel()
|
||||||
window.agora.stopScreenCapture()
|
agora.stopScreenCapture()
|
||||||
navigate(-1)
|
navigate(-1)
|
||||||
}}>全员结束会议</div>
|
}}>全员结束会议</div>
|
||||||
<div onClick={() => {
|
<div onClick={() => {
|
||||||
window.agora.leaveChannel()
|
agora.leaveChannel()
|
||||||
window.agora.stopScreenCapture()
|
agora.stopScreenCapture()
|
||||||
navigate(-1)
|
navigate(-1)
|
||||||
}}>仅自己离开</div>
|
}}>仅自己离开</div>
|
||||||
<div onClick={() => { setOpen(false) }}>取消</div>
|
<div onClick={() => { setOpen(false) }}>取消</div>
|
||||||
|
|
@ -481,7 +482,7 @@ const Meeting: React.FC = () => {
|
||||||
...audioDeviceManager,
|
...audioDeviceManager,
|
||||||
currentDevice: e
|
currentDevice: e
|
||||||
})
|
})
|
||||||
window.agora.setRecordingDevice(e);
|
agora.setRecordingDevice(e);
|
||||||
getAudioMediaList()
|
getAudioMediaList()
|
||||||
}} />;
|
}} />;
|
||||||
<audio src="" id='startAudio'></audio>
|
<audio src="" id='startAudio'></audio>
|
||||||
|
|
@ -493,7 +494,7 @@ const Meeting: React.FC = () => {
|
||||||
...audioDeviceManager,
|
...audioDeviceManager,
|
||||||
currentVolume: e
|
currentVolume: e
|
||||||
})
|
})
|
||||||
window.agora.setRecordingDeviceVolume(e)
|
agora.setRecordingDeviceVolume(e)
|
||||||
}} style={{ flexGrow: 1 }} />
|
}} style={{ flexGrow: 1 }} />
|
||||||
</div> :
|
</div> :
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -530,7 +531,7 @@ const Meeting: React.FC = () => {
|
||||||
audio.srcObject = null;
|
audio.srcObject = null;
|
||||||
}
|
}
|
||||||
setStepsStatus(false)
|
setStepsStatus(false)
|
||||||
window.agora.startPreview().then((res: boolean) => {
|
agora.startPreview().then((res: boolean) => {
|
||||||
setIsVideoLoad(res)
|
setIsVideoLoad(res)
|
||||||
})
|
})
|
||||||
}}>下一步</Button>
|
}}>下一步</Button>
|
||||||
|
|
@ -542,9 +543,9 @@ const Meeting: React.FC = () => {
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (isVideoLoad) {
|
if (isVideoLoad) {
|
||||||
setIsVideoLoad(false)
|
setIsVideoLoad(false)
|
||||||
window.agora.stopAudioDeviceLoopbackTest()
|
agora.stopAudioDeviceLoopbackTest()
|
||||||
setStepsStatus(true)
|
setStepsStatus(true)
|
||||||
window.agora.startRecordingDeviceTest(200)
|
agora.startRecordingDeviceTest(200)
|
||||||
} else {
|
} else {
|
||||||
message.error('视频加载中!')
|
message.error('视频加载中!')
|
||||||
}
|
}
|
||||||
|
|
@ -555,8 +556,8 @@ const Meeting: React.FC = () => {
|
||||||
className='m-ant-btn'
|
className='m-ant-btn'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (isVideoLoad) {
|
if (isVideoLoad) {
|
||||||
window.agora.stopAudioDeviceLoopbackTest()
|
agora.stopAudioDeviceLoopbackTest()
|
||||||
window.agora.setRecordingDeviceVolume(audioDeviceManager.currentVolume)
|
agora.setRecordingDeviceVolume(audioDeviceManager.currentVolume)
|
||||||
setIsStupWizard(false)
|
setIsStupWizard(false)
|
||||||
setStepsStatus(true)
|
setStepsStatus(true)
|
||||||
setIsVideoLoad(false)
|
setIsVideoLoad(false)
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ const {
|
||||||
} = require("agora-electron-sdk");
|
} = require("agora-electron-sdk");
|
||||||
const { message } = require('antd');
|
const { message } = require('antd');
|
||||||
const rtcEngine = createAgoraRtcEngine();
|
const rtcEngine = createAgoraRtcEngine();
|
||||||
const option = {
|
const option: any = {
|
||||||
appId: 'dcfc466a6ecb4a1f972630065dfb1e75',
|
appId: 'dcfc466a6ecb4a1f972630065dfb1e75',
|
||||||
token: '',
|
token: '',
|
||||||
channelId: '',
|
channelId: '',
|
||||||
|
|
@ -23,7 +23,7 @@ rtcEngine.initialize({
|
||||||
|
|
||||||
rtcEngine.registerEventHandler({
|
rtcEngine.registerEventHandler({
|
||||||
// 监听本地用户加入频道事件
|
// 监听本地用户加入频道事件
|
||||||
onJoinChannelSuccess: ({ channelId, localUid }, elapsed) => {
|
onJoinChannelSuccess: ({ channelId, localUid }: any, elapsed: any) => {
|
||||||
console.log({ channelId, localUid }, elapsed, '加入房间');
|
console.log({ channelId, localUid }, elapsed, '加入房间');
|
||||||
// 本地用户加入频道后,设置本地视频窗口
|
// 本地用户加入频道后,设置本地视频窗口
|
||||||
rtcEngine.setupLocalVideo({
|
rtcEngine.setupLocalVideo({
|
||||||
|
|
@ -31,61 +31,64 @@ rtcEngine.registerEventHandler({
|
||||||
// sourceType: VideoSourceType.VideoSourceScreen,
|
// sourceType: VideoSourceType.VideoSourceScreen,
|
||||||
sourceType: VideoSourceType.VideoSourceCameraPrimary,
|
sourceType: VideoSourceType.VideoSourceCameraPrimary,
|
||||||
uid: localUid,
|
uid: localUid,
|
||||||
view: getDom(),
|
view: agora.getDom(),
|
||||||
setupMode: VideoViewSetupMode.VideoViewSetupAdd,
|
setupMode: VideoViewSetupMode.VideoViewSetupAdd,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 监听远端用户加入频道事件
|
// 监听远端用户加入频道事件
|
||||||
onUserJoined: ({ channelId, localUid }, remoteUid, elapsed) => {
|
onUserJoined: ({ channelId, localUid }: any, remoteUid: any, elapsed: any) => {
|
||||||
|
console.log({ channelId, localUid }, remoteUid, '远端加入频道');
|
||||||
// 远端用户加入频道后,设置远端视频窗口
|
// 远端用户加入频道后,设置远端视频窗口
|
||||||
rtcEngine.setupRemoteVideo(
|
rtcEngine.setupRemoteVideo(
|
||||||
{
|
{
|
||||||
renderMode: RenderModeType.RenderModeFit,
|
renderMode: RenderModeType.RenderModeFit,
|
||||||
sourceType: VideoSourceType.VideoSourceRemote,
|
sourceType: VideoSourceType.VideoSourceRemote,
|
||||||
uid: remoteUid,
|
uid: remoteUid,
|
||||||
view: getDom(),
|
view: agora.getDom(),
|
||||||
setupMode: VideoViewSetupMode.VideoViewSetupAdd,
|
setupMode: VideoViewSetupMode.VideoViewSetupAdd,
|
||||||
},
|
},
|
||||||
{ channelId },
|
{ channelId },
|
||||||
);
|
);
|
||||||
|
|
||||||
},
|
},
|
||||||
// 视频发布状态改变回调
|
|
||||||
onVideoPublishStateChanged: (source, channel, oldState, newState, elapseSinceLastState) => {
|
|
||||||
if (newState === 1) {
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 音频发布状态改变回调
|
|
||||||
onAudioPublishStateChanged: (channel, oldState, newState, elapseSinceLastState) => {
|
|
||||||
if (newState === 1) {
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 监听用户离开频道事件
|
// 监听用户离开频道事件
|
||||||
onUserOffline: ({ channelId, localUid }, remoteUid, reason) => {
|
onUserOffline: ({ channelId, localUid }: any, remoteUid: any, reason: any) => {
|
||||||
// 远端用户离开频道后,关闭远端视频窗口
|
// 远端用户离开频道后,关闭远端视频窗口
|
||||||
|
console.log({ channelId, localUid }, remoteUid, '离开频道');
|
||||||
rtcEngine.setupRemoteVideo(
|
rtcEngine.setupRemoteVideo(
|
||||||
{
|
{
|
||||||
renderMode: RenderModeType.RenderModeFit,
|
renderMode: RenderModeType.RenderModeFit,
|
||||||
sourceType: VideoSourceType.VideoSourceRemote,
|
sourceType: VideoSourceType.VideoSourceRemote,
|
||||||
uid: remoteUid,
|
uid: remoteUid,
|
||||||
view: getDom(),
|
view: agora.getDom(),
|
||||||
setupMode: VideoViewSetupMode.VideoViewSetupRemove,
|
setupMode: VideoViewSetupMode.VideoViewSetupRemove,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
// 视频发布状态改变回调
|
||||||
|
onVideoPublishStateChanged: (source: any, channel: any, oldState: any, newState: any, elapseSinceLastState: any) => {
|
||||||
|
if (newState === 1) {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 音频发布状态改变回调
|
||||||
|
onAudioPublishStateChanged: (channel: any, oldState: any, newState: any, elapseSinceLastState: any) => {
|
||||||
|
if (newState === 1) {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
// 用户音量提示回调。
|
// 用户音量提示回调。
|
||||||
onAudioVolumeIndication: (connection, speakers, speakerNumber, totalVolume) => {
|
onAudioVolumeIndication: (connection: any, speakers: any, speakerNumber: any, totalVolume: any,) => {
|
||||||
const percentage = (totalVolume / 255) * 100
|
const percentage = (totalVolume / 255) * 100
|
||||||
if (document.getElementById('recordingDeviceTest')) {
|
const dom = document.getElementById('recordingDeviceTest') as any;
|
||||||
document.getElementById('recordingDeviceTest').style.width = `${percentage}%`
|
if (dom) {
|
||||||
|
dom.style.width = `${percentage}%`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let videoID = '';
|
let videoID: string = '';
|
||||||
let iMediaRecorder = '';
|
let iMediaRecorder: any = '';
|
||||||
|
|
||||||
const agora = {
|
const agora = {
|
||||||
getDom: () => {
|
getDom: () => {
|
||||||
|
|
@ -100,7 +103,7 @@ const agora = {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// 加入频道
|
// 加入频道
|
||||||
joinChannel: (bool) => {
|
joinChannel: (bool: boolean) => {
|
||||||
if (bool) {
|
if (bool) {
|
||||||
rtcEngine.joinChannel(option.token, option.channelId, option.userid, {
|
rtcEngine.joinChannel(option.token, option.channelId, option.userid, {
|
||||||
channelProfile: ChannelProfileType.ChannelProfileLiveBroadcasting, //设置频道场景为直播场景
|
channelProfile: ChannelProfileType.ChannelProfileLiveBroadcasting, //设置频道场景为直播场景
|
||||||
|
|
@ -137,11 +140,11 @@ const agora = {
|
||||||
})
|
})
|
||||||
iMediaRecorder.setMediaRecorderObserver({
|
iMediaRecorder.setMediaRecorderObserver({
|
||||||
// 录制状态发生改变回调。
|
// 录制状态发生改变回调。
|
||||||
onRecorderStateChanged: (channelId, uid, state, reason) => {
|
onRecorderStateChanged: (channelId: any, uid: any, state: any, reason: any) => {
|
||||||
console.log(channelId, uid, state, reason, '录制状态发生改变回调。');
|
console.log(channelId, uid, state, reason, '录制状态发生改变回调。');
|
||||||
},
|
},
|
||||||
// 录制信息更新回调。
|
// 录制信息更新回调。
|
||||||
onRecorderInfoUpdated: (channelId, uid, info) => {
|
onRecorderInfoUpdated: (channelId: any, uid: any, info: any) => {
|
||||||
console.log(channelId, uid, info, '录制信息更新回调。');
|
console.log(channelId, uid, info, '录制信息更新回调。');
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
@ -157,13 +160,13 @@ const agora = {
|
||||||
rtcEngine.stopScreenCapture();
|
rtcEngine.stopScreenCapture();
|
||||||
},
|
},
|
||||||
// 开启本地视频预览
|
// 开启本地视频预览
|
||||||
startPreview: async () => {
|
startPreview: async (): Promise<boolean> => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
navigator.mediaDevices.getUserMedia({
|
navigator.mediaDevices.getUserMedia({
|
||||||
video: true,
|
video: true,
|
||||||
audio: true,
|
audio: true,
|
||||||
}).then((stream) => {
|
}).then((stream) => {
|
||||||
let dom = document.getElementById('startPreview');
|
let dom = document.getElementById('startPreview') as any;
|
||||||
dom.srcObject = stream;
|
dom.srcObject = stream;
|
||||||
dom.play()
|
dom.play()
|
||||||
resolve(true)
|
resolve(true)
|
||||||
|
|
@ -177,29 +180,29 @@ const agora = {
|
||||||
stopAudioDeviceLoopbackTest: () => {
|
stopAudioDeviceLoopbackTest: () => {
|
||||||
rtcEngine.getAudioDeviceManager().stopAudioDeviceLoopbackTest()
|
rtcEngine.getAudioDeviceManager().stopAudioDeviceLoopbackTest()
|
||||||
rtcEngine.getAudioDeviceManager().stopRecordingDeviceTest()
|
rtcEngine.getAudioDeviceManager().stopRecordingDeviceTest()
|
||||||
let video = document.getElementById('startPreview');
|
let video = document.getElementById('startPreview') as any;
|
||||||
if (video.srcObject) {
|
if (video.srcObject) {
|
||||||
const tracks = video.srcObject.getTracks();
|
const tracks = video.srcObject.getTracks();
|
||||||
tracks.forEach((track) => {
|
tracks.forEach((track: any) => {
|
||||||
track.stop();
|
track.stop();
|
||||||
});
|
});
|
||||||
video.srcObject = null;
|
video.srcObject = null;
|
||||||
}
|
}
|
||||||
let audio = document.getElementById('startAudio');
|
let audio = document.getElementById('startAudio') as any;
|
||||||
if (audio.srcObject) {
|
if (audio.srcObject) {
|
||||||
const tracks = audio.srcObject.getTracks();
|
const tracks = audio.srcObject.getTracks();
|
||||||
tracks.forEach((track) => {
|
tracks.forEach((track: any) => {
|
||||||
track.stop();
|
track.stop();
|
||||||
});
|
});
|
||||||
audio.srcObject = null;
|
audio.srcObject = null;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 启动音频采集设备测试
|
// 启动音频采集设备测试
|
||||||
startRecordingDeviceTest: (indicationInterval) => {
|
startRecordingDeviceTest: (indicationInterval: number) => {
|
||||||
rtcEngine.getAudioDeviceManager().startRecordingDeviceTest(indicationInterval)
|
rtcEngine.getAudioDeviceManager().startRecordingDeviceTest(indicationInterval)
|
||||||
navigator.mediaDevices.getUserMedia({ audio: true })
|
navigator.mediaDevices.getUserMedia({ audio: true })
|
||||||
.then((stream) => {
|
.then((stream) => {
|
||||||
let dom = document.getElementById('startAudio');
|
let dom = document.getElementById('startAudio') as any;
|
||||||
dom.srcObject = stream;
|
dom.srcObject = stream;
|
||||||
dom.play()
|
dom.play()
|
||||||
})
|
})
|
||||||
|
|
@ -216,11 +219,11 @@ const agora = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 设置音频设备音量
|
// 设置音频设备音量
|
||||||
setRecordingDeviceVolume: (volume) => {
|
setRecordingDeviceVolume: (volume: number) => {
|
||||||
rtcEngine.getAudioDeviceManager().setRecordingDeviceVolume(volume)
|
rtcEngine.getAudioDeviceManager().setRecordingDeviceVolume(volume)
|
||||||
},
|
},
|
||||||
// 设置音频采集设备
|
// 设置音频采集设备
|
||||||
setRecordingDevice: (deviceId) => {
|
setRecordingDevice: (deviceId: string) => {
|
||||||
rtcEngine.getAudioDeviceManager().setRecordingDevice(deviceId)
|
rtcEngine.getAudioDeviceManager().setRecordingDevice(deviceId)
|
||||||
},
|
},
|
||||||
// 摄像头采集
|
// 摄像头采集
|
||||||
|
|
@ -229,27 +232,19 @@ const agora = {
|
||||||
// joinChannel(false)
|
// joinChannel(false)
|
||||||
},
|
},
|
||||||
// 加入频道
|
// 加入频道
|
||||||
setJoinChannel: (data) => {
|
setJoinChannel: (data: any) => {
|
||||||
option.token = data.token;
|
option.token = data.token;
|
||||||
option.channelId = data.channelId;
|
option.channelId = data.channelId;
|
||||||
option.userid = Number(data.userid);
|
option.userid = Number(data.userid);
|
||||||
rtcEngine.startCameraCapture(VideoSourceType.VideoSourceCamera, {})
|
rtcEngine.startCameraCapture(VideoSourceType.VideoSourceCamera, {})
|
||||||
// joinChannel(false)
|
// joinChannel(false)
|
||||||
},
|
},
|
||||||
// 离开频道
|
|
||||||
leaveChannel: () => {
|
|
||||||
// leaveChannel()
|
|
||||||
},
|
|
||||||
// 停止共享屏幕
|
|
||||||
stopScreenCapture: () => {
|
|
||||||
// stopScreenCapture()
|
|
||||||
},
|
|
||||||
// 取消或恢复发布本地音频流
|
// 取消或恢复发布本地音频流
|
||||||
muteLocalAudioStream: (mute) => {
|
muteLocalAudioStream: (mute: any) => {
|
||||||
rtcEngine.muteLocalAudioStream(mute)
|
rtcEngine.muteLocalAudioStream(mute)
|
||||||
},
|
},
|
||||||
// 取消或恢复发布本地视频流
|
// 取消或恢复发布本地视频流
|
||||||
muteLocalVideoStream: (mute) => {
|
muteLocalVideoStream: (mute: any) => {
|
||||||
rtcEngine.muteLocalVideoStream(mute)
|
rtcEngine.muteLocalVideoStream(mute)
|
||||||
},
|
},
|
||||||
// 获取当前生成的视频id
|
// 获取当前生成的视频id
|
||||||
|
|
@ -262,7 +257,7 @@ const agora = {
|
||||||
},
|
},
|
||||||
|
|
||||||
// 共享屏幕采集
|
// 共享屏幕采集
|
||||||
setDesktopCapturerVideo: (targetSource) => {
|
setDesktopCapturerVideo: (targetSource: any) => {
|
||||||
// stopScreenCapture()
|
// stopScreenCapture()
|
||||||
if (
|
if (
|
||||||
targetSource.type ===
|
targetSource.type ===
|
||||||
|
|
@ -292,4 +287,4 @@ const agora = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
window.agora = agora;
|
export default agora;
|
||||||
Loading…
Reference in New Issue