You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

189 lines
4.5 KiB

3 years ago
<template>
<div
class="width-100vw height-100vh flex-column flex-justify-start flex-align-start"
>
<div
class="mt20 flex-row flex-align-center flex-justify-between"
style="width: 100%"
>
<p class="ml10 mb0 fz16" style="color: black">
Select Video Publish Mode:
</p>
<a-select
style="width: 200px"
placeholder="Select Mode"
@select="onPublishModeSelect"
>
<a-select-option
v-for="item in publishModeList"
:key="item.label"
:value="item.value"
>
{{ item.label }}
</a-select-option>
</a-select>
</div>
<a-divider dashed class="mt10 mb0"></a-divider>
<div
class="flex-row flex-align-center flex-justify-between mt10"
style="width: 100%"
>
<p class="ml10 mb0 fz16" style="color: black">Select Live Share Type:</p>
<a-select
style="width: 200px"
placeholder="Select Live Type"
@select="onLiveTypeSelect"
>
<a-select-option
v-for="item in liveTypeList"
:key="item.label"
:value="item.value"
>
{{ item.label }}
</a-select-option>
</a-select>
</div>
<a-divider dashed class="mt10 mb0"></a-divider>
<div
class="flex-row flex-align-center flex-justify-center mt20"
style="width: 100%"
>
<p>Live Share State: {{ liveState }}</p>
</div>
<div
class="flex-row flex-align-center flex-justify-center mt20"
style="width: 100%"
>
<a-button type="primary" @click="onPlay">Play</a-button>
<a-button class="ml20" type="primary" @click="onGetConfig"
>Get Config</a-button
>
<a-button class="ml20" type="primary" @click="onGetStatus"
>Get Status</a-button
>
</div>
</div>
</template>
<script lang="ts" setup>
import { message } from 'ant-design-vue'
import { onMounted, ref } from 'vue'
import { CURRENT_CONFIG as config } from '/@/api/http/config'
import apiPilot from '/@/api/pilot-bridge'
import { getRoot } from '/@/root'
const root = getRoot()
const publishModeList = [
{
value: 'video-on-demand',
label: 'video-on-demand'
},
{
value: 'video-by-manual',
label: 'video-by-manual'
},
{
value: 'video-demand-aux-manual',
label: 'video-demand-aux-manual'
}
]
const liveTypeList = [
{
value: 1,
label: 'AGORA'
},
{
value: 2,
label: 'RTMP'
},
{
value: 3,
label: 'RTSP'
},
{
value: 4,
label: 'GB28181'
}
]
const agoraParam = {
uid: config.agoraAPPID,
token: config.agoraToken,
channelId: config.agoraChannel
}
const rtmpParam = {
url: config.rtmpURL + '12345'
}
const liveState = ref<string>('STOP')
const livetypeSelected = ref<number>(1)
const publishModeSelected = ref<string>('video-demand-aux-manual')
onMounted(() => {
const status: any = apiPilot.getLiveshareStatus()
console.log(status)
// liveState.value =
// status.status === 0
// ? 'Cannot connect to server'
// : status.status === 1
// ? 'Connect to server'
// : 'Playing'
// console.log(liveState.value)
})
const onLiveTypeSelect = (val: any) => {
livetypeSelected.value = val
message.info('set livetype:' + livetypeSelected.value, 5)
}
const onPublishModeSelect = (val: string) => {
publishModeSelected.value = val
message.info(
'set publish mode res:' +
apiPilot.setVideoPublishType(publishModeSelected.value),
5
)
}
const onPlay = () => {
switch (livetypeSelected.value) {
case 1: {
message.info('agoraParam:' + JSON.stringify(agoraParam))
apiPilot.setLiveshareConfig(1, JSON.stringify(agoraParam))
apiPilot.startLiveshare()
break
}
case 2: {
message.info('rtmpParam:' + JSON.stringify(rtmpParam))
apiPilot.setLiveshareConfig(2, JSON.stringify(rtmpParam))
message.info(apiPilot.startLiveshare())
break
}
case 3: {
3 years ago
message.info('rtspParam:' + config.rtspPara)
apiPilot.setLiveshareConfig(3, config.rtspPara)
3 years ago
apiPilot.startLiveshare()
break
}
case 4: {
3 years ago
message.info('gb28181Param:' + config.gb28181Para)
apiPilot.setLiveshareConfig(4, config.gb28181Para)
3 years ago
apiPilot.startLiveshare()
break
}
}
}
const onGetStatus = () => {
const status = apiPilot.getLiveshareStatus()
message.info(status, 5)
}
const onGetConfig = () => {
const status = apiPilot.getLiveshareConfig()
message.info(status, 5)
}
</script>
<style lang="scss" scoped>
// @import '/@/styles/index.scss';
</style>