rtmp lazy push

This commit is contained in:
madao
2025-02-03 23:42:47 +08:00
parent 6614b3aaf7
commit 3ffe980eca
5 changed files with 112 additions and 100 deletions

View File

@@ -2,9 +2,9 @@
-- Drop table
-- DROP TABLE camera;
-- DROP TABLE public.camera;
CREATE TABLE camera (
CREATE TABLE public.camera (
code varchar(255) NULL, -- 编号
rtsp_url varchar(255) NULL, -- rtsp地址
rtmp_url varchar(255) NULL, -- rtmp推送地址
@@ -16,6 +16,11 @@ CREATE TABLE camera (
live bool NULL, -- 直播状态
created timestamp NULL, -- 创建时间
id varchar(255) NOT NULL,
fg_secret bool NULL DEFAULT false, -- 加密标志
secret varchar NULL, -- 密钥
fg_passive bool NULL DEFAULT false, -- 被动推送rtmp标志
rtmp_auth_code varchar NULL, -- rtmp识别码
camera_type varchar NULL, -- rtmp识别码
CONSTRAINT pk_camera PRIMARY KEY (id)
);
COMMENT ON TABLE public.camera IS '摄像头';
@@ -32,105 +37,20 @@ COMMENT ON COLUMN public.camera.rtmp_push_status IS 'rtmp推送状态';
COMMENT ON COLUMN public.camera.save_video IS '保存录像状态';
COMMENT ON COLUMN public.camera.live IS '直播状态';
COMMENT ON COLUMN public.camera.created IS '创建时间';
COMMENT ON COLUMN public.camera.fg_secret IS '加密标志';
COMMENT ON COLUMN public.camera.secret IS '密钥';
COMMENT ON COLUMN public.camera.fg_passive IS '被动推送rtmp标志';
COMMENT ON COLUMN public.camera.rtmp_auth_code IS 'rtmp识别码';
COMMENT ON COLUMN public.camera.camera_type IS 'rtmp识别码';
-- public.sys_token definition
-- Drop table
-- DROP TABLE sys_token;
CREATE TABLE sys_token (
username varchar(255) NULL, -- 用户名称
nick_name varchar(255) NULL, -- 昵称
create_time timestamp NULL, -- 创建时间
"token" varchar(255) NULL, -- 令牌
expired_time timestamp NULL, -- 过期时间
user_info_string varchar(4000) NULL, -- 用户信息序列化
id_sys_token varchar(255) NOT NULL,
CONSTRAINT pk_sys_token PRIMARY KEY (id_sys_token)
);
COMMENT ON TABLE public.sys_token IS '令牌';
-- Column comments
COMMENT ON COLUMN public.sys_token.username IS '用户名称';
COMMENT ON COLUMN public.sys_token.nick_name IS '昵称';
COMMENT ON COLUMN public.sys_token.create_time IS '创建时间';
COMMENT ON COLUMN public.sys_token."token" IS '令牌';
COMMENT ON COLUMN public.sys_token.expired_time IS '过期时间';
COMMENT ON COLUMN public.sys_token.user_info_string IS '用户信息序列化';
-- public.sys_user definition
-- Drop table
-- DROP TABLE sys_user;
CREATE TABLE sys_user (
account varchar(255) NULL, -- 登录账号
user_pwd varchar(255) NULL, -- 用户密码
phone varchar(255) NULL, -- 手机号码
email varchar(255) NULL, -- 邮箱
"name" varchar(255) NULL, -- 姓名
nick_name varchar(255) NULL, -- 昵称
gender varchar(255) NULL, -- 性别
fg_active bool NULL, -- 启用标志
id_user varchar(255) NOT NULL,
CONSTRAINT pk_sys_user PRIMARY KEY (id_user)
);
COMMENT ON TABLE public.sys_user IS '系统用户';
-- Column comments
COMMENT ON COLUMN public.sys_user.account IS '登录账号 ';
COMMENT ON COLUMN public.sys_user.user_pwd IS '用户密码 ';
COMMENT ON COLUMN public.sys_user.phone IS '手机号码';
COMMENT ON COLUMN public.sys_user.email IS '邮箱';
COMMENT ON COLUMN public.sys_user."name" IS '姓名 ';
COMMENT ON COLUMN public.sys_user.nick_name IS '昵称';
COMMENT ON COLUMN public.sys_user.gender IS '性别';
COMMENT ON COLUMN public.sys_user.fg_active IS '启用标志';
-- public.camera_share definition
-- Drop table
-- DROP TABLE camera_share;
CREATE TABLE camera_share (
"name" varchar(255) NULL, -- 名称
auth_code varchar(255) NULL, -- 权限码
enabled bool NULL, -- 启用状态
created timestamp NULL, -- 创建时间
start_time timestamp NULL, -- 开始时间
deadline timestamp NULL, -- 结束时间
camera_id varchar(255) NOT NULL, -- 摄像头id
id varchar(255) NOT NULL,
CONSTRAINT pk_camera_share PRIMARY KEY (id),
CONSTRAINT camera_share_camera_id_fkey FOREIGN KEY (camera_id) REFERENCES camera(id)
);
COMMENT ON TABLE public.camera_share IS '摄像头分享';
-- Column comments
COMMENT ON COLUMN public.camera_share."name" IS '名称';
COMMENT ON COLUMN public.camera_share.auth_code IS '权限码';
COMMENT ON COLUMN public.camera_share.enabled IS '启用状态';
COMMENT ON COLUMN public.camera_share.created IS '创建时间';
COMMENT ON COLUMN public.camera_share.start_time IS '开始时间';
COMMENT ON COLUMN public.camera_share.deadline IS '结束时间';
COMMENT ON COLUMN public.camera_share.camera_id IS '摄像头id';
-- public.camera_record definition
-- Drop table
-- DROP TABLE camera_record;
-- DROP TABLE public.camera_record;
CREATE TABLE camera_record (
CREATE TABLE public.camera_record (
id_camera_record varchar(255) NOT NULL,
created timestamp NULL, -- 创建时间
temp_file_name varchar(255) NULL, -- 临时文件名称
@@ -158,3 +78,94 @@ COMMENT ON COLUMN public.camera_record.start_time IS '开始时间';
COMMENT ON COLUMN public.camera_record.end_time IS '结束时间';
COMMENT ON COLUMN public.camera_record.id_camera IS '摄像头主属性';
COMMENT ON COLUMN public.camera_record.has_audio IS '是否有音频';
-- public.sys_token definition
-- Drop table
-- DROP TABLE public.sys_token;
CREATE TABLE public.sys_token (
username varchar(255) NULL, -- 用户名称
nick_name varchar(255) NULL, -- 昵称
create_time timestamp NULL, -- 创建时间
"token" varchar(255) NULL, -- 令牌
expired_time timestamp NULL, -- 过期时间
user_info_string varchar(4000) NULL, -- 用户信息序列化
id_sys_token varchar(255) NOT NULL,
CONSTRAINT pk_sys_token PRIMARY KEY (id_sys_token)
);
COMMENT ON TABLE public.sys_token IS '令牌';
-- Column comments
COMMENT ON COLUMN public.sys_token.username IS '用户名称';
COMMENT ON COLUMN public.sys_token.nick_name IS '昵称';
COMMENT ON COLUMN public.sys_token.create_time IS '创建时间';
COMMENT ON COLUMN public.sys_token."token" IS '令牌';
COMMENT ON COLUMN public.sys_token.expired_time IS '过期时间';
COMMENT ON COLUMN public.sys_token.user_info_string IS '用户信息序列化';
-- public.sys_user definition
-- Drop table
-- DROP TABLE public.sys_user;
CREATE TABLE public.sys_user (
account varchar(255) NULL, -- 登录账号
user_pwd varchar(255) NULL, -- 用户密码
phone varchar(255) NULL, -- 手机号码
email varchar(255) NULL, -- 邮箱
name varchar(255) NULL, -- 姓名
nick_name varchar(255) NULL, -- 昵称
gender varchar(255) NULL, -- 性别
fg_active bool NULL, -- 启用标志
id_user varchar(255) NOT NULL,
CONSTRAINT pk_sys_user PRIMARY KEY (id_user)
);
COMMENT ON TABLE public.sys_user IS '系统用户';
-- Column comments
COMMENT ON COLUMN public.sys_user.account IS '登录账号 ';
COMMENT ON COLUMN public.sys_user.user_pwd IS '用户密码 ';
COMMENT ON COLUMN public.sys_user.phone IS '手机号码';
COMMENT ON COLUMN public.sys_user.email IS '邮箱';
COMMENT ON COLUMN public.sys_user.name IS '姓名 ';
COMMENT ON COLUMN public.sys_user.nick_name IS '昵称';
COMMENT ON COLUMN public.sys_user.gender IS '性别';
COMMENT ON COLUMN public.sys_user.fg_active IS '启用标志';
-- public.camera_share definition
-- Drop table
-- DROP TABLE public.camera_share;
CREATE TABLE public.camera_share (
name varchar(255) NULL, -- 名称
auth_code varchar(255) NULL, -- 权限码
enabled bool NULL, -- 启用状态
created timestamp NULL, -- 创建时间
start_time timestamp NULL, -- 开始时间
deadline timestamp NULL, -- 结束时间
camera_id varchar(255) NOT NULL, -- 摄像头id
id varchar(255) NOT NULL,
CONSTRAINT pk_camera_share PRIMARY KEY (id),
CONSTRAINT camera_share_camera_id_fkey FOREIGN KEY (camera_id) REFERENCES public.camera(id)
);
COMMENT ON TABLE public.camera_share IS '摄像头分享';
-- Column comments
COMMENT ON COLUMN public.camera_share.name IS '名称';
COMMENT ON COLUMN public.camera_share.auth_code IS '权限码';
COMMENT ON COLUMN public.camera_share.enabled IS '启用状态';
COMMENT ON COLUMN public.camera_share.created IS '创建时间';
COMMENT ON COLUMN public.camera_share.start_time IS '开始时间';
COMMENT ON COLUMN public.camera_share.deadline IS '结束时间';
COMMENT ON COLUMN public.camera_share.camera_id IS '摄像头id';

File diff suppressed because one or more lines are too long

View File

@@ -51,7 +51,7 @@ func (rfm *RtmpFlvAdmin) ReConntion(code string) {
if ok {
rfw := v.(*rtmpflvwriter.RtmpFlvWriter)
rfw.StopWrite()
rfwNew := rtmpflvwriter.NewRtmpFlvWriter(false, rfw.GetPktStream(), code, rfw.GetCodecs(), rfm)
rfwNew := rtmpflvwriter.NewRtmpFlvWriter(rfw.GetNeedPushRtmp(), rfw.GetPktStream(), code, rfw.GetCodecs(), rfm)
rfm.rfms.Store(code, rfwNew)
}
}
@@ -61,6 +61,7 @@ func (rfm *RtmpFlvAdmin) RemoteStartWrite(code string) {
if ok {
rfw := v.(*rtmpflvwriter.RtmpFlvWriter)
if !rfw.GetNeedPushRtmp() {
rfw.StopWrite()
rfwNew := rtmpflvwriter.NewRtmpFlvWriter(true, rfw.GetPktStream(), code, rfw.GetCodecs(), rfm)
rfm.rfms.Store(code, rfwNew)
}

View File

@@ -142,13 +142,13 @@ func (rfw *RtmpFlvWriter) flvWrite() {
select {
case <-rfw.GetDone():
return
case <-time.NewTicker(1 * time.Second).C:
case <-time.NewTicker(1 * time.Minute).C:
camerastatuspush.CameraOnlinePush(camera.Code)
}
}
}()
}
if !camera.RtmpPushStatus && !rfw.needPushRtmp {
if !camera.RtmpPushStatus || !rfw.needPushRtmp {
for {
select {
case <-rfw.GetDone():

View File

@@ -87,7 +87,7 @@ func (s *RtspClientManager) startConnections() {
for {
timeNow := time.Now()
if timeNow.After(timeTemp.Add(30 * time.Second)) {
condition := common.GetEmptyCondition()
condition := common.GetEqualCondition("cameraType", "rtsp")
es, err = base_service.CameraFindCollectionByCondition(condition)
if err != nil {
logs.Error("camera list query error: %s", err)