Browse Source

优化播放程序,缩短播放加载时间

pull/1/head
Lawrence 4 years ago
parent
commit
f68cfd8de2
  1. 14
      src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
  2. 11
      web_src/src/components/channelList.vue
  3. 2
      web_src/src/components/gb28181/devicePlayer.vue

14
src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java

@ -39,7 +39,8 @@ public class PlayController {
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,6 +65,7 @@ public class PlayController {
long startTime = System.currentTimeMillis();
JSONObject rtpInfo = null;
if (getEncoding == 1) {
while (lockFlag) {
try {
if (System.currentTimeMillis() - startTime > 60 * 1000) {
@ -76,7 +78,8 @@ public class PlayController {
logger.info("查询RTP推流信息...");
rtpInfo = zlmresTfulUtils.getRtpInfo(streamId);
}
if (rtpInfo != null && rtpInfo.getBoolean("exist") && streamInfo != null && streamInfo.getFlv() != null) {
if (rtpInfo != null && rtpInfo.getBoolean("exist") && streamInfo != null
&& streamInfo.getFlv() != null) {
logger.info("查询流编码信息:" + streamInfo.getFlv());
rtpPushed = true;
Thread.sleep(2000);
@ -99,6 +102,13 @@ public class PlayController {
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()) {
logger.debug(String.format("设备预览 API调用,deviceId:%s ,channelId:%s", deviceId, channelId));

11
web_src/src/components/channelList.vue

@ -59,7 +59,7 @@
<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" @click="sendDevicePush(scope.row)">录像查询</el-button> -->
</el-button-group>
</template>
</el-table-column>
@ -197,18 +197,19 @@ export default {
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,{
that.$refs.devicePlayer.openDialog("media", deviceId, channelId, {
streamInfo: res.data,
hasAudio: itemData.hasAudio
});
@ -222,7 +223,7 @@ export default {
var format = moment().format("YYYY-M-D");
let deviceId = this.deviceId;
let channelId = itemData.channelId;
this.$refs.devicePlayer.openDialog("record", deviceId, channelId, {date:format})
this.$refs.devicePlayer.openDialog("record", deviceId, channelId, {date: format})
},
stopDevicePush: function (itemData) {
console.log(itemData)

2
web_src/src/components/gb28181/devicePlayer.vue

@ -223,7 +223,7 @@ export default {
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") { // AAC

Loading…
Cancel
Save