mirror of
https://github.com/hkmadao/rtsp2rtmp.git
synced 2025-09-26 19:31:19 +08:00
rtmp lazy push
This commit is contained in:
@@ -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, -- 临时文件名称
|
||||
@@ -157,4 +77,95 @@ COMMENT ON COLUMN public.camera_record.duration IS '文件时长: 单位:毫
|
||||
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 '是否有音频';
|
||||
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
@@ -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)
|
||||
}
|
||||
|
@@ -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():
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user