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