From 4e8659e156767b7f471725840b331a5ec9be9894 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期六, 07 十一月 2020 22:15:53 +0800
Subject: [PATCH] Merge pull request #10 from lawrencehj/master
---
src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java | 72 +++++++++++++----------
web_src/src/components/channelList.vue | 23 ++++---
web_src/src/components/gb28181/devicePlayer.vue | 2
pom.xml | 14 ++++
src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java | 28 ++++++++-
5 files changed, 92 insertions(+), 47 deletions(-)
diff --git a/pom.xml b/pom.xml
index a8cf147..b5e44c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -163,6 +163,7 @@
<build>
<plugins>
+
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
@@ -176,6 +177,18 @@
<configuration>
<source>1.8</source>
<target>1.8</target>
+ <!--
+ <webResources>
+ <resource>
+ <directory>${project.basedir}/libs</directory>
+ <targetPath>WEB-INF/lib</targetPath>
+ <filtering>true</filtering>
+ <includes>
+ <include>**/*.jar</include>
+ </includes>
+ </resource>
+ </webResources>
+ -->
</configuration>
</plugin>
@@ -183,6 +196,7 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
+
</plugins>
</build>
</project>
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java
index 7c3a2fc..765dc82 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java
@@ -276,6 +276,7 @@
PageResult pageResult = new PageResult<Device>();
pageResult.setPage(page);
pageResult.setCount(count);
+ Device device = null;
if (deviceIds == null || deviceIds.length == 0) {
@@ -284,11 +285,21 @@
pageResult.setTotal(deviceIdList.size());
int maxCount = (page + 1)* count;
for (int i = page * count; i < (pageResult.getTotal() > maxCount ? maxCount : pageResult.getTotal() ); i++) {
- devices.add((Device)redis.get((String)deviceIdList.get(i)));
+ // devices.add((Device)redis.get((String)deviceIdList.get(i)));
+ device =(Device)redis.get((String)deviceIdList.get(i));
+ if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){
+ outline(device.getDeviceId());
+ }
+ devices.add(device);
}
} else {
for (int i = 0; i < deviceIds.length; i++) {
- devices.add((Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i]));
+ // devices.add((Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i]));
+ device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i]);
+ if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){
+ outline(device.getDeviceId());
+ }
+ devices.add(device);
}
}
pageResult.setData(devices);
@@ -304,16 +315,25 @@
@Override
public List<Device> queryVideoDeviceList(String[] deviceIds) {
List<Device> devices = new ArrayList<>();
+ Device device = null;
if (deviceIds == null || deviceIds.length == 0) {
// List<Object> deviceIdList = redis.keys(VideoManagerConstants.DEVICE_PREFIX+"*");
List<Object> deviceIdList = redis.scan(VideoManagerConstants.DEVICE_PREFIX+"*");
for (int i = 0; i < deviceIdList.size(); i++) {
- devices.add((Device)redis.get((String)deviceIdList.get(i)));
+ device =(Device)redis.get((String)deviceIdList.get(i));
+ if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){
+ outline(device.getDeviceId());
+ }
+ devices.add(device);
}
} else {
for (int i = 0; i < deviceIds.length; i++) {
- devices.add((Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i]));
+ device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i]);
+ if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){
+ outline(device.getDeviceId());
+ }
+ devices.add(device);
}
}
return devices;
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
index 00f268c..780e950 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
@@ -39,7 +39,8 @@
private ZLMRESTfulUtils zlmresTfulUtils;
@GetMapping("/play/{deviceId}/{channelId}")
- public ResponseEntity<String> play(@PathVariable String deviceId, @PathVariable String channelId) {
+ public ResponseEntity<String> play(@PathVariable String deviceId, @PathVariable String channelId,
+ Integer getEncoding) {
Device device = storager.queryVideoDevice(deviceId);
StreamInfo streamInfo = storager.queryPlayByDevice(deviceId, channelId);
@@ -64,40 +65,49 @@
long startTime = System.currentTimeMillis();
JSONObject rtpInfo = null;
- while (lockFlag) {
- try {
- if (System.currentTimeMillis() - startTime > 60 * 1000) {
- storager.stopPlay(streamInfo);
- logger.info("鎾斁绛夊緟瓒呮椂");
- return new ResponseEntity<String>("timeout", HttpStatus.OK);
- } else {
- streamInfo = storager.queryPlayByDevice(deviceId, channelId);
- if (!rtpPushed) {
- logger.info("鏌ヨRTP鎺ㄦ祦淇℃伅...");
- rtpInfo = zlmresTfulUtils.getRtpInfo(streamId);
- }
- if (rtpInfo != null && rtpInfo.getBoolean("exist") && streamInfo != null && streamInfo.getFlv() != null) {
- logger.info("鏌ヨ娴佺紪鐮佷俊鎭細" + streamInfo.getFlv());
- rtpPushed = true;
- Thread.sleep(2000);
- JSONObject mediaInfo = zlmresTfulUtils.getMediaInfo("rtp", "rtmp", streamId);
- if (mediaInfo.getInteger("code") == 0 && mediaInfo.getBoolean("online")) {
- lockFlag = false;
- logger.info("娴佺紪鐮佷俊鎭凡鑾峰彇");
- JSONArray tracks = mediaInfo.getJSONArray("tracks");
- streamInfo.setTracks(tracks);
- storager.startPlay(streamInfo);
- } else {
- logger.info("娴佺紪鐮佷俊鎭湭鑾峰彇锛�2绉掑悗閲嶈瘯...");
- }
+ if (getEncoding == 1) {
+ while (lockFlag) {
+ try {
+ if (System.currentTimeMillis() - startTime > 60 * 1000) {
+ storager.stopPlay(streamInfo);
+ logger.info("鎾斁绛夊緟瓒呮椂");
+ return new ResponseEntity<String>("timeout", HttpStatus.OK);
} else {
- Thread.sleep(2000);
- continue;
+ streamInfo = storager.queryPlayByDevice(deviceId, channelId);
+ if (!rtpPushed) {
+ logger.info("鏌ヨRTP鎺ㄦ祦淇℃伅...");
+ rtpInfo = zlmresTfulUtils.getRtpInfo(streamId);
+ }
+ if (rtpInfo != null && rtpInfo.getBoolean("exist") && streamInfo != null
+ && streamInfo.getFlv() != null) {
+ logger.info("鏌ヨ娴佺紪鐮佷俊鎭細" + streamInfo.getFlv());
+ rtpPushed = true;
+ Thread.sleep(2000);
+ JSONObject mediaInfo = zlmresTfulUtils.getMediaInfo("rtp", "rtmp", streamId);
+ if (mediaInfo.getInteger("code") == 0 && mediaInfo.getBoolean("online")) {
+ lockFlag = false;
+ logger.info("娴佺紪鐮佷俊鎭凡鑾峰彇");
+ JSONArray tracks = mediaInfo.getJSONArray("tracks");
+ streamInfo.setTracks(tracks);
+ storager.startPlay(streamInfo);
+ } else {
+ logger.info("娴佺紪鐮佷俊鎭湭鑾峰彇锛�2绉掑悗閲嶈瘯...");
+ }
+ } else {
+ Thread.sleep(2000);
+ continue;
+ }
}
+ } catch (InterruptedException e) {
+ e.printStackTrace();
}
- } catch (InterruptedException e) {
- e.printStackTrace();
}
+ } else {
+ String flv = storager.getMediaInfo().getLocalIP() + ":" + storager.getMediaInfo().getHttpPort() + "/rtp/"
+ + streamId + ".flv";
+ streamInfo.setFlv("http://" + flv);
+ streamInfo.setWs_flv("ws://" + flv);
+ storager.startPlay(streamInfo);
}
if (logger.isDebugEnabled()) {
diff --git a/web_src/src/components/channelList.vue b/web_src/src/components/channelList.vue
index 930da5b..b539e8c 100644
--- a/web_src/src/components/channelList.vue
+++ b/web_src/src/components/channelList.vue
@@ -58,8 +58,8 @@
<el-button size="mini" icon="el-icon-video-play" @click="sendDevicePush(scope.row)">鎾斁</el-button>
<el-button size="mini" icon="el-icon-switch-button" type="danger" v-if="scope.row.play" @click="stopDevicePush(scope.row)">鍋滄</el-button>
<el-button size="mini" icon="el-icon-s-open" type="primary" v-if="scope.row.parental == 1" @click="changeSubchannel(scope.row)">鏌ョ湅</el-button>
- <el-button size="mini" icon="el-icon-video-camera" type="primary" @click="queryRecords(scope.row)">璁惧褰曡薄</el-button>
-<!-- <el-button size="mini" @click="sendDevicePush(scope.row)">褰曞儚鏌ヨ</el-button> -->
+ <el-button size="mini" icon="el-icon-video-camera" type="primary" @click="queryRecords(scope.row)">璁惧褰曡薄</el-button>
+ <!-- <el-button size="mini" @click="sendDevicePush(scope.row)">褰曞儚鏌ヨ</el-button> -->
</el-button-group>
</template>
</el-table-column>
@@ -197,20 +197,21 @@
let deviceId = this.deviceId;
this.isLoging = true;
let channelId = itemData.channelId;
- console.log("閫氱煡璁惧鎺ㄦ祦1锛�" + deviceId + " : " + channelId);
+ let getEncoding = itemData.hasAudio ? '1' : '0'
+ console.log("閫氱煡璁惧鎺ㄦ祦1锛�" + deviceId + " : " + channelId + ":" + getEncoding);
let that = this;
this.$axios({
method: 'get',
- url: '/api/play/' + deviceId + '/' + channelId
+ url: '/api/play/' + deviceId + '/' + channelId + '?getEncoding=' + getEncoding
}).then(function (res) {
console.log(res.data)
let ssrc = res.data.ssrc;
that.isLoging = false;
if (!!ssrc) {
// that.$refs.devicePlayer.play(res.data, deviceId, channelId, itemData.hasAudio);
- that.$refs.devicePlayer.openDialog("media", deviceId, channelId,{
- streamInfo: res.data,
- hasAudio: itemData.hasAudio
+ that.$refs.devicePlayer.openDialog("media", deviceId, channelId, {
+ streamInfo: res.data,
+ hasAudio: itemData.hasAudio
});
that.initData();
} else {
@@ -219,10 +220,10 @@
}).catch(function (e) {});
},
queryRecords: function (itemData) {
- var format = moment().format("YYYY-M-D");
- let deviceId = this.deviceId;
- let channelId = itemData.channelId;
- this.$refs.devicePlayer.openDialog("record", deviceId, channelId, {date:format})
+ var format = moment().format("YYYY-M-D");
+ let deviceId = this.deviceId;
+ let channelId = itemData.channelId;
+ this.$refs.devicePlayer.openDialog("record", deviceId, channelId, {date: format})
},
stopDevicePush: function (itemData) {
console.log(itemData)
diff --git a/web_src/src/components/gb28181/devicePlayer.vue b/web_src/src/components/gb28181/devicePlayer.vue
index 493f5d5..b8e45ba 100644
--- a/web_src/src/components/gb28181/devicePlayer.vue
+++ b/web_src/src/components/gb28181/devicePlayer.vue
@@ -223,7 +223,7 @@
play: function (streamInfo, hasAudio) {
this.hasaudio = hasAudio;
// 鏍规嵁濯掍綋娴佷俊鎭簩娆″垽鏂�
- if (!!streamInfo.tracks && streamInfo.tracks.length > 0) {
+ if (!!streamInfo.tracks && streamInfo.tracks.length > 0 && hasAudio) {
var realHasAudio = false;
for (let i = 0; i < streamInfo.tracks.length; i++) {
if (streamInfo.tracks[i].codec_type == 1 && streamInfo.tracks[i].codec_id_name == "CodecAAC") { // 鍒ゆ柇涓篈AC闊抽
--
Gitblit v1.8.0