From 4134c73745ff63d44186ed608735ea432b244755 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期四, 21 三月 2024 22:38:56 +0800 Subject: [PATCH] 优化Track的构建 --- src/main/java/com/genersoft/iot/vmp/media/bean/Track.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 96 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/media/bean/Track.java b/src/main/java/com/genersoft/iot/vmp/media/bean/Track.java index e95e795..963474e 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/bean/Track.java +++ b/src/main/java/com/genersoft/iot/vmp/media/bean/Track.java @@ -1,6 +1,11 @@ package com.genersoft.iot.vmp.media.bean; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam; import io.swagger.v3.oas.annotations.media.Schema; + +import java.util.List; /** * 瑙嗛淇℃伅 @@ -22,6 +27,97 @@ @Schema(description = "闊抽閲囨牱鐜�") private Integer audioSampleRate; + public static Track getInstance(JSONObject jsonObject) { + Track track = new Track(); + Integer totalReaderCount = jsonObject.getInteger("totalReaderCount"); + if (totalReaderCount != null) { + track.setReaderCount(totalReaderCount); + } + JSONArray jsonArray = jsonObject.getJSONArray("tracks"); + if (jsonArray.isEmpty()) { + return null; + } + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject trackJson = jsonArray.getJSONObject(i); + Integer channels = trackJson.getInteger("channels"); + Integer codecId = trackJson.getInteger("codec_id"); + Integer codecType = trackJson.getInteger("codec_type"); + Integer sampleRate = trackJson.getInteger("sample_rate"); + Integer height = trackJson.getInteger("height"); + Integer width = trackJson.getInteger("height"); + if (channels != null) { + track.setAudioChannels(channels); + } + if (sampleRate != null) { + track.setAudioSampleRate(sampleRate); + } + if (height != null) { + track.setHeight(height); + } + if (width != null) { + track.setWidth(width); + } + if (codecId != null) { + switch (codecId) { + case 0: + track.setVideoCodec("H264"); + break; + case 1: + track.setVideoCodec("H265"); + break; + case 2: + track.setAudioCodec("AAC"); + break; + case 3: + track.setAudioCodec("G711A"); + break; + case 4: + track.setAudioCodec("G711U"); + break; + } + } + } + return track; + } + + public static Track getInstance(OnStreamChangedHookParam param) { + List<OnStreamChangedHookParam.MediaTrack> tracks = param.getTracks(); + Track track = new Track(); + track.setReaderCount(param.getTotalReaderCount()); + for (OnStreamChangedHookParam.MediaTrack mediaTrack : tracks) { + switch (mediaTrack.getCodec_id()) { + case 0: + track.setVideoCodec("H264"); + break; + case 1: + track.setVideoCodec("H265"); + break; + case 2: + track.setAudioCodec("AAC"); + break; + case 3: + track.setAudioCodec("G711A"); + break; + case 4: + track.setAudioCodec("G711U"); + break; + } + if (mediaTrack.getSample_rate() > 0) { + track.setAudioSampleRate(mediaTrack.getSample_rate()); + } + if (mediaTrack.getChannels() > 0) { + track.setAudioChannels(mediaTrack.getChannels()); + } + if (mediaTrack.getHeight() > 0) { + track.setHeight(mediaTrack.getHeight()); + } + if (mediaTrack.getWidth() > 0) { + track.setWidth(mediaTrack.getWidth()); + } + } + return track; + } + public Integer getReaderCount() { return readerCount; } -- Gitblit v1.8.0