|
|
@@ -1,7 +1,12 @@
|
|
|
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 @@ public class Track {
|
|
|
@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;
|
|
|
}
|