青柿流工具类:http请求登录,获取状态,获取直播列表,m3u8,mp4

package org.jeecg.modules.flow.controller.delete;

import cn.hutool.core.date.DateUtil;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSONObject;
import com.xkcoding.http.HttpUtil;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class LiveQingTest {
    //接口地址
    static final String api = "http://192.168.70.158:28000";
    //设备ID
    static final String deviceId = "15WbDL1SR123";

    /**
     * 登录
     *
     * @return
     */
    private static String login() {
        //admin 和 密码,密码用 md5 加密
        String username = "admin", password = SecureUtil.md5("mima"), token = "";
        try {
            //Get登录
            String result = HttpUtil.get(api + "/api/v1/login?username=" + username + "&password=" + password);
            //打印解析
            log.info(result);
            //返回后解析Json (使用fastJson打印)
            JSONObject jsonObject = JSONObject.parseObject(result);
            //如果为200
            if (jsonObject.getInteger("code") == 200) {
                //jsonObject在获取JsonObject。获取data
                JSONObject dataJson = jsonObject.getJSONObject("data");
                //返回结果的token
                token = dataJson.getString("token");
            }
        } catch (Exception exception) {
            log.error(exception.getLocalizedMessage());
        }
        return token;
    }

    /**
     * 状态  newPushSession:推流中,closePushSession:停止推流
     *
     * @param deviceId
     * @return
     */
    private static String getDeviceState(String deviceId) {
        String type = null;
        //获取推流状态
        String result = HttpUtil.get(api + "/api/v1/live/state?id=" + deviceId);
        log.info(result);
        JSONObject jsonObject = JSONObject.parseObject(result);

        if (jsonObject.getInteger("code") == 200) {
            JSONObject dataJson = jsonObject.getJSONObject("data");
            type = dataJson.getString("type");
        }
        return type;
    }

    /**
     * 获取直播列表  all:所有直播(默认值) living:直播中,unstart:尚未直播
     *
     * @param token
     * @return
     */
    private static JSONObject getLiveList(String token, String state) {
        //获取开放直播列表
        String result = HttpUtil.get(api + "/api/v1/live/list?state=" + state + "&start=0&limit=100&token=" + token);
        log.info(result);
        JSONObject jsonObject = JSONObject.parseObject(result);

        if (jsonObject.getInteger("code") == 200) {
            JSONObject dataJson = jsonObject.getJSONObject("data");
            log.info(dataJson.toJSONString());
            return dataJson;
        }
        return null;
    }

    //m3u8
    private static String getM3u8Url(String deviceId, String starttime, String endtime) {
        //指定时间段录像播放(连续录像hls播放)
        String videoUrl = api + "/api/v1/record/video/hls/" + deviceId + "/" + starttime + "/" + endtime + "/video.m3u8";
        String result = HttpUtil.get(videoUrl);
        log.info(videoUrl);
        return videoUrl;
    }

    //mp4
    private static String getMp4Url(String deviceId, String starttime, String endtime) {
        //指定时间段录像播放(连续录像mp4播放)
        System.out.println(DateUtil.now());
        //组装URL,进行返回
        String videoUrl = api + "/api/v1/record/video/play/" + deviceId + "/" + starttime + "/" + endtime + "/video.mp4";

        //这里使用了xkcoding的simple-http,使用 hutool的更好,可以设置 超时时间
        String result = HttpUtil.get(videoUrl);

        log.info(videoUrl);
        //使用 hutool工具类 打印时间
        System.out.println(DateUtil.now());

        return videoUrl;
    }

    public static void main(String[] args) {
        try {
            //String token = login();
            //String state = getDeviceState(deviceId);
            //JSONObject living = getLiveList(token, "living");

            String starttime = "20240322154500", endtime = "20240322154600";
            //String m3u8Url = getM3u8Url(deviceId, starttime, endtime);
            String mpuUrl = getMp4Url(deviceId, starttime, endtime);
        } catch (Exception e) {
            log.error(e.getMessage());
        }
    }
}

``
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值