优化播放程序,缩短播放加载时间
parent
366d57b2b3
commit
f68cfd8de2
|
@ -39,7 +39,8 @@ public class PlayController {
|
||||||
private ZLMRESTfulUtils zlmresTfulUtils;
|
private ZLMRESTfulUtils zlmresTfulUtils;
|
||||||
|
|
||||||
@GetMapping("/play/{deviceId}/{channelId}")
|
@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);
|
Device device = storager.queryVideoDevice(deviceId);
|
||||||
StreamInfo streamInfo = storager.queryPlayByDevice(deviceId, channelId);
|
StreamInfo streamInfo = storager.queryPlayByDevice(deviceId, channelId);
|
||||||
|
@ -64,6 +65,7 @@ public class PlayController {
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
JSONObject rtpInfo = null;
|
JSONObject rtpInfo = null;
|
||||||
|
|
||||||
|
if (getEncoding == 1) {
|
||||||
while (lockFlag) {
|
while (lockFlag) {
|
||||||
try {
|
try {
|
||||||
if (System.currentTimeMillis() - startTime > 60 * 1000) {
|
if (System.currentTimeMillis() - startTime > 60 * 1000) {
|
||||||
|
@ -76,7 +78,8 @@ public class PlayController {
|
||||||
logger.info("查询RTP推流信息...");
|
logger.info("查询RTP推流信息...");
|
||||||
rtpInfo = zlmresTfulUtils.getRtpInfo(streamId);
|
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());
|
logger.info("查询流编码信息:" + streamInfo.getFlv());
|
||||||
rtpPushed = true;
|
rtpPushed = true;
|
||||||
Thread.sleep(2000);
|
Thread.sleep(2000);
|
||||||
|
@ -99,6 +102,13 @@ public class PlayController {
|
||||||
e.printStackTrace();
|
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()) {
|
if (logger.isDebugEnabled()) {
|
||||||
logger.debug(String.format("设备预览 API调用,deviceId:%s ,channelId:%s", deviceId, channelId));
|
logger.debug(String.format("设备预览 API调用,deviceId:%s ,channelId:%s", deviceId, channelId));
|
||||||
|
|
|
@ -197,11 +197,12 @@ export default {
|
||||||
let deviceId = this.deviceId;
|
let deviceId = this.deviceId;
|
||||||
this.isLoging = true;
|
this.isLoging = true;
|
||||||
let channelId = itemData.channelId;
|
let channelId = itemData.channelId;
|
||||||
console.log("通知设备推流1:" + deviceId + " : " + channelId);
|
let getEncoding = itemData.hasAudio ? '1' : '0'
|
||||||
|
console.log("通知设备推流1:" + deviceId + " : " + channelId + ":" + getEncoding);
|
||||||
let that = this;
|
let that = this;
|
||||||
this.$axios({
|
this.$axios({
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: '/api/play/' + deviceId + '/' + channelId
|
url: '/api/play/' + deviceId + '/' + channelId + '?getEncoding=' + getEncoding
|
||||||
}).then(function (res) {
|
}).then(function (res) {
|
||||||
console.log(res.data)
|
console.log(res.data)
|
||||||
let ssrc = res.data.ssrc;
|
let ssrc = res.data.ssrc;
|
||||||
|
|
|
@ -223,7 +223,7 @@ export default {
|
||||||
play: function (streamInfo, hasAudio) {
|
play: function (streamInfo, hasAudio) {
|
||||||
this.hasaudio = hasAudio;
|
this.hasaudio = hasAudio;
|
||||||
// 根据媒体流信息二次判断
|
// 根据媒体流信息二次判断
|
||||||
if (!!streamInfo.tracks && streamInfo.tracks.length > 0) {
|
if (!!streamInfo.tracks && streamInfo.tracks.length > 0 && hasAudio) {
|
||||||
var realHasAudio = false;
|
var realHasAudio = false;
|
||||||
for (let i = 0; i < streamInfo.tracks.length; i++) {
|
for (let i = 0; i < streamInfo.tracks.length; i++) {
|
||||||
if (streamInfo.tracks[i].codec_type == 1 && streamInfo.tracks[i].codec_id_name == "CodecAAC") { // 判断为AAC音频
|
if (streamInfo.tracks[i].codec_type == 1 && streamInfo.tracks[i].codec_id_name == "CodecAAC") { // 判断为AAC音频
|
||||||
|
|
Loading…
Reference in New Issue