| | |
| | | |
| | | <el-dialog title="视频播放" top="0" :close-on-click-modal="false" :visible.sync="showVideoDialog" @close="close()"> |
| | | <!-- <LivePlayer v-if="showVideoDialog" ref="videoPlayer" :videoUrl="videoUrl" :error="videoError" :message="videoError" :hasaudio="hasaudio" fluent autoplay live></LivePlayer> --> |
| | | <player ref="videoPlayer" :visible.sync="showVideoDialog" :videoUrl="videoUrl" :error="videoError" :message="videoError" :height="false" :hasaudio="hasaudio" fluent autoplay live ></player> |
| | | <player ref="videoPlayer" :visible.sync="showVideoDialog" :videoUrl="videoUrl" :error="videoError" :message="videoError" :height="false" :hasAudio="hasAudio" fluent autoplay live ></player> |
| | | <div id="shared" style="text-align: right; margin-top: 1rem;"> |
| | | <el-tabs v-model="tabActiveName" @tab-click="tabHandleClick"> |
| | | <el-tab-pane label="实时视频" name="media"> |
| | |
| | | |
| | | <el-table-column label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button icon="el-icon-video-play" size="mini" @click="playRecord(scope.row)">播放</el-button> |
| | | <el-button-group> |
| | | <el-button icon="el-icon-video-play" size="mini" @click="playRecord(scope.row)">播放</el-button> |
| | | <el-button icon="el-icon-download" size="mini" @click="downloadRecord(scope.row)">下载</el-button> |
| | | </el-button-group> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | <script> |
| | | // import player from '../dialog/rtcPlayer.vue' |
| | | // import LivePlayer from '@liveqing/liveplayer' |
| | | import player from '../dialog/easyPlayer.vue' |
| | | // import player from '../dialog/easyPlayer.vue' |
| | | import player from '../dialog/jessibuca.vue' |
| | | export default { |
| | | name: 'devicePlayer', |
| | | props: {}, |
| | |
| | | showVideoDialog: false, |
| | | streamId: '', |
| | | app : '', |
| | | mediaServerId : '', |
| | | convertKey: '', |
| | | deviceId: '', |
| | | channelId: '', |
| | | tabActiveName: 'media', |
| | | hasaudio: false, |
| | | hasAudio: false, |
| | | loadingRecords: false, |
| | | recordsLoading: false, |
| | | isLoging: false, |
| | |
| | | if (tab.name == "codec") { |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: '/zlm/index/api/getMediaInfo?vhost=__defaultVhost__&schema=rtmp&app='+ this.app +'&stream='+ this.streamId |
| | | url: '/zlm/' +this.mediaServerId+ '/index/api/getMediaInfo?vhost=__defaultVhost__&schema=rtmp&app='+ this.app +'&stream='+ this.streamId |
| | | }).then(function (res) { |
| | | that.tracksLoading = false; |
| | | if (res.data.code == 0 && res.data.online) { |
| | |
| | | this.channelId = channelId; |
| | | this.deviceId = deviceId; |
| | | this.streamId = ""; |
| | | this.mediaServerId = ""; |
| | | this.app = ""; |
| | | this.videoUrl = "" |
| | | if (!!this.$refs.videoPlayer) { |
| | |
| | | break; |
| | | case "streamPlay": |
| | | this.tabActiveName = "media"; |
| | | this.showRrecord = false, |
| | | this.showPtz = false, |
| | | this.showRrecord = false; |
| | | this.showPtz = false; |
| | | this.play(param.streamInfo, param.hasAudio) |
| | | break; |
| | | case "control": |
| | |
| | | console.log(val) |
| | | }, |
| | | play: function (streamInfo, hasAudio) { |
| | | |
| | | this.hasaudio = hasAudio; |
| | | this.hasAudio = hasAudio; |
| | | this.isLoging = false; |
| | | // this.videoUrl = streamInfo.rtc; |
| | | this.videoUrl = this.getUrlByStreamInfo(streamInfo); |
| | | this.streamId = streamInfo.streamId; |
| | | this.app = streamInfo.app; |
| | | this.mediaServerId = streamInfo.mediaServerId; |
| | | this.playFromStreamInfo(false, streamInfo) |
| | | }, |
| | | getUrlByStreamInfo(streamInfo){ |
| | | let baseZlmApi = process.env.NODE_ENV === 'development'?`${location.host}/debug/zlm`:`${location.host}/zlm` |
| | | console.log(12121212) |
| | | console.log(baseZlmApi) |
| | | // return `${baseZlmApi}/${streamInfo.app}/${streamInfo.streamId}.flv`; |
| | | return `http://${baseZlmApi}/${streamInfo.app}/${streamInfo.streamId}.flv`; |
| | | // return `http://${baseZlmApi}/${streamInfo.app}/${streamInfo.streamId}.flv`; |
| | | if (location.protocol === "https:") { |
| | | if (streamInfo.wss_flv === null) { |
| | | this.$message({ |
| | | showClose: true, |
| | | message: '媒体服务器未配置ssl端口', |
| | | type: 'error' |
| | | }); |
| | | }else { |
| | | return streamInfo.wss_flv; |
| | | } |
| | | |
| | | }else { |
| | | return streamInfo.ws_flv; |
| | | } |
| | | |
| | | }, |
| | | coverPlay: function () { |
| | | var that = this; |
| | |
| | | var streamInfo = res.data; |
| | | that.app = streamInfo.app; |
| | | that.streamId = streamInfo.streamId; |
| | | that.mediaServerId = streamInfo.mediaServerId; |
| | | that.videoUrl = that.getUrlByStreamInfo(streamInfo); |
| | | that.recordPlay = true; |
| | | }); |
| | |
| | | if (callback) callback() |
| | | }); |
| | | }, |
| | | downloadRecord: function (row) { |
| | | let that = this; |
| | | if (that.streamId != "") { |
| | | that.stopDownloadRecord(function () { |
| | | that.streamId = "", |
| | | that.downloadRecord(row); |
| | | }) |
| | | } else { |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: '/api/download/start/' + this.deviceId + '/' + this.channelId + '?startTime=' + row.startTime + '&endTime=' + |
| | | row.endTime + '&downloadSpeed=4' |
| | | }).then(function (res) { |
| | | var streamInfo = res.data; |
| | | that.app = streamInfo.app; |
| | | that.streamId = streamInfo.streamId; |
| | | that.mediaServerId = streamInfo.mediaServerId; |
| | | that.videoUrl = that.getUrlByStreamInfo(streamInfo); |
| | | that.recordPlay = true; |
| | | }); |
| | | } |
| | | }, |
| | | stopDownloadRecord: function (callback) { |
| | | this.$refs.videoPlayer.pause(); |
| | | this.videoUrl = ''; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: '/api/download/stop/' + this.deviceId + "/" + this.channelId |
| | | }).then(function (res) { |
| | | if (callback) callback() |
| | | }); |
| | | }, |
| | | ptzCamera: function (leftRight, upDown, zoom) { |
| | | console.log('云台控制:' + leftRight + ' : ' + upDown + " : " + zoom); |
| | | let that = this; |