mirror of
https://github.com/hkmadao/rtsp2rtmp.git
synced 2025-09-26 19:31:19 +08:00
ui just
This commit is contained in:
@@ -59,7 +59,7 @@ CREATE TABLE public.camera_record (
|
||||
start_time timestamp NULL, -- 开始时间
|
||||
end_time timestamp NULL, -- 结束时间
|
||||
id_camera varchar(255) NOT NULL, -- 摄像头主属性
|
||||
has_audio bool NULL, -- 是否有音频
|
||||
has_audio bool NULL DEFAULT true, -- 是否有音频
|
||||
CONSTRAINT pk_camera_record PRIMARY KEY (id_camera_record)
|
||||
);
|
||||
COMMENT ON TABLE public.camera_record IS '摄像头记录';
|
||||
|
@@ -7,7 +7,7 @@ server:
|
||||
port: 8080
|
||||
static:
|
||||
path: ./resources/static
|
||||
use-https: true
|
||||
use-https: false
|
||||
cert:
|
||||
private-key-path: ./resources/conf/cert/private_key.pem
|
||||
cert-path: ./resources/conf/cert/certificate.crt
|
||||
|
File diff suppressed because one or more lines are too long
@@ -241,6 +241,7 @@ func (ffw *FileFlvWriter) flvWrite() {
|
||||
FgTemp: true,
|
||||
FgRemove: false,
|
||||
Duration: 0,
|
||||
HasAudio: hasAudio(ffw.codecs),
|
||||
}
|
||||
_, err = base_service.CameraRecordCreate(cameraRecord)
|
||||
if err != nil {
|
||||
@@ -255,6 +256,15 @@ func (ffw *FileFlvWriter) flvWrite() {
|
||||
}
|
||||
}
|
||||
|
||||
func hasAudio(streams []av.CodecData) bool {
|
||||
for _, stream := range streams {
|
||||
if stream.Type().IsAudio() {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (ffw *FileFlvWriter) writeScriptTagData() {
|
||||
var filters = []common.EqualFilter{{Name: "idCamera", Value: ffw.idCamera}, {Name: "tempFileName", Value: ffw.tempFileName}}
|
||||
condition := common.GetEqualConditions(filters)
|
||||
|
@@ -14,6 +14,7 @@ import (
|
||||
"github.com/hkmadao/rtsp2rtmp/src/rtsp2rtmp/flvadmin"
|
||||
"github.com/hkmadao/rtsp2rtmp/src/rtsp2rtmp/flvadmin/fileflvmanager/fileflvreader"
|
||||
"github.com/hkmadao/rtsp2rtmp/src/rtsp2rtmp/web/common"
|
||||
"github.com/hkmadao/rtsp2rtmp/src/rtsp2rtmp/web/dto/vo/ext/flv_file"
|
||||
base_service "github.com/hkmadao/rtsp2rtmp/src/rtsp2rtmp/web/service/base"
|
||||
)
|
||||
|
||||
@@ -113,13 +114,17 @@ func HttpFlvVODFileDuration(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
duration, err := fileflvreader.FlvDurationReadUntilErr(fileName)
|
||||
durationInt, err := fileflvreader.FlvDurationReadUntilErr(fileName)
|
||||
mediaInfo := flv_file.FlvMediaInfo{
|
||||
Duration: uint32(durationInt),
|
||||
HasAudio: true,
|
||||
}
|
||||
if err != nil {
|
||||
logs.Error("file: %s get duration error", fileName)
|
||||
logs.Error("file: %s get mediaInfo error", fileName)
|
||||
http.Error(ctx.Writer, "Internal Server Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
result := common.SuccessResultData(duration)
|
||||
result := common.SuccessResultData(mediaInfo)
|
||||
ctx.JSON(http.StatusOK, result)
|
||||
}
|
||||
|
||||
|
@@ -5,123 +5,133 @@ import (
|
||||
)
|
||||
|
||||
func GetCameraRecordDesc() *common.EntityDesc {
|
||||
var entityInfo = common.EntityInfo{
|
||||
Name: "CameraRecord",
|
||||
DisplayName: "摄像头记录",
|
||||
ClassName: "CameraRecord",
|
||||
TableName: "camera_record",
|
||||
BasePath: "entity::camera_record",
|
||||
}
|
||||
var idRecordAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "id_camera_record",
|
||||
Name: "idCameraRecord",
|
||||
DisplayName: "记录id",
|
||||
DataType: "InternalPK",
|
||||
ValueType: "string",
|
||||
}
|
||||
var createdAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "created",
|
||||
Name: "created",
|
||||
DisplayName: "创建时间",
|
||||
DataType: "DateTime",
|
||||
ValueType: "DateTime",
|
||||
}
|
||||
var tempFileNameAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "temp_file_name",
|
||||
Name: "tempFileName",
|
||||
DisplayName: "临时文件名称",
|
||||
DataType: "String",
|
||||
ValueType: "string",
|
||||
}
|
||||
var fgTempAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "fg_temp",
|
||||
Name: "fgTemp",
|
||||
DisplayName: "临时文件标志",
|
||||
DataType: "Boolean",
|
||||
ValueType: "bool",
|
||||
}
|
||||
var fileNameAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "file_name",
|
||||
Name: "fileName",
|
||||
DisplayName: "文件名称",
|
||||
DataType: "String",
|
||||
ValueType: "string",
|
||||
}
|
||||
var fgRemoveAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "fg_remove",
|
||||
Name: "fgRemove",
|
||||
DisplayName: "文件删除标志",
|
||||
DataType: "Boolean",
|
||||
ValueType: "bool",
|
||||
}
|
||||
var durationAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "duration",
|
||||
Name: "duration",
|
||||
DisplayName: "文件时长",
|
||||
DataType: "Integer",
|
||||
ValueType: "number",
|
||||
}
|
||||
var startTimeAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "start_time",
|
||||
Name: "startTime",
|
||||
DisplayName: "开始时间",
|
||||
DataType: "DateTime",
|
||||
ValueType: "DateTime",
|
||||
}
|
||||
var endTimeAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "end_time",
|
||||
Name: "endTime",
|
||||
DisplayName: "结束时间",
|
||||
DataType: "DateTime",
|
||||
ValueType: "DateTime",
|
||||
}
|
||||
var idCameraAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "id_camera",
|
||||
Name: "idCamera",
|
||||
DisplayName: "摄像头主属性",
|
||||
DataType: "InternalFK",
|
||||
ValueType: "string",
|
||||
InnerAttributeName: "camera",
|
||||
OutEntityName: "Camera",
|
||||
OutEntityPkAttributeName: "id",
|
||||
OutEntityReversalAttributeName: "cameraRecords",
|
||||
}
|
||||
var cameraAttributeInfo = &common.AttributeInfo{
|
||||
ColumnName: "",
|
||||
Name: "camera",
|
||||
DisplayName: "摄像头",
|
||||
DataType: "InternalRef",
|
||||
ValueType: "",
|
||||
InnerAttributeName: "idCamera",
|
||||
OutEntityName: "Camera",
|
||||
OutEntityPkAttributeName: "id",
|
||||
OutEntityReversalAttributeName: "cameraRecords",
|
||||
}
|
||||
var entityDesc = &common.EntityDesc{
|
||||
EntityInfo: entityInfo,
|
||||
PkAttributeInfo: idRecordAttributeInfo,
|
||||
NormalFkIdAttributeInfos: []*common.AttributeInfo{
|
||||
idCameraAttributeInfo,
|
||||
},
|
||||
NormalFkAttributeInfos: []*common.AttributeInfo{
|
||||
cameraAttributeInfo,
|
||||
},
|
||||
NormalChildren: []*common.AttributeInfo{},
|
||||
NormalOne2OneChildren: []*common.AttributeInfo{},
|
||||
AttributeInfoMap: map[string]*common.AttributeInfo{
|
||||
"idCameraRecord": idRecordAttributeInfo,
|
||||
"created": createdAttributeInfo,
|
||||
"tempFileName": tempFileNameAttributeInfo,
|
||||
"fgTemp": fgTempAttributeInfo,
|
||||
"fileName": fileNameAttributeInfo,
|
||||
"fgRemove": fgRemoveAttributeInfo,
|
||||
"duration": durationAttributeInfo,
|
||||
"startTime": startTimeAttributeInfo,
|
||||
"endTime": endTimeAttributeInfo,
|
||||
"idCamera": idCameraAttributeInfo,
|
||||
"camera": cameraAttributeInfo,
|
||||
},
|
||||
}
|
||||
var entityInfo = common.EntityInfo {
|
||||
Name: "CameraRecord",
|
||||
DisplayName: "摄像头记录",
|
||||
ClassName: "CameraRecord",
|
||||
TableName: "camera_record",
|
||||
BasePath: "entity::camera_record",
|
||||
}
|
||||
var idCameraRecordAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "id_camera_record",
|
||||
Name: "idCameraRecord",
|
||||
DisplayName: "记录id",
|
||||
DataType: "InternalPK",
|
||||
ValueType: "string",
|
||||
};
|
||||
var createdAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "created",
|
||||
Name: "created",
|
||||
DisplayName: "创建时间",
|
||||
DataType: "DateTime",
|
||||
ValueType: "DateTime",
|
||||
};
|
||||
var tempFileNameAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "temp_file_name",
|
||||
Name: "tempFileName",
|
||||
DisplayName: "临时文件名称",
|
||||
DataType: "String",
|
||||
ValueType: "string",
|
||||
};
|
||||
var fgTempAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "fg_temp",
|
||||
Name: "fgTemp",
|
||||
DisplayName: "临时文件标志",
|
||||
DataType: "Boolean",
|
||||
ValueType: "bool",
|
||||
};
|
||||
var fileNameAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "file_name",
|
||||
Name: "fileName",
|
||||
DisplayName: "文件名称",
|
||||
DataType: "String",
|
||||
ValueType: "string",
|
||||
};
|
||||
var fgRemoveAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "fg_remove",
|
||||
Name: "fgRemove",
|
||||
DisplayName: "文件删除标志",
|
||||
DataType: "Boolean",
|
||||
ValueType: "bool",
|
||||
};
|
||||
var durationAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "duration",
|
||||
Name: "duration",
|
||||
DisplayName: "文件时长",
|
||||
DataType: "Integer",
|
||||
ValueType: "number",
|
||||
};
|
||||
var startTimeAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "start_time",
|
||||
Name: "startTime",
|
||||
DisplayName: "开始时间",
|
||||
DataType: "DateTime",
|
||||
ValueType: "DateTime",
|
||||
};
|
||||
var endTimeAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "end_time",
|
||||
Name: "endTime",
|
||||
DisplayName: "结束时间",
|
||||
DataType: "DateTime",
|
||||
ValueType: "DateTime",
|
||||
};
|
||||
var hasAudioAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "has_audio",
|
||||
Name: "hasAudio",
|
||||
DisplayName: "是否有音频",
|
||||
DataType: "Boolean",
|
||||
ValueType: "bool",
|
||||
};
|
||||
var idCameraAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "id_camera",
|
||||
Name: "idCamera",
|
||||
DisplayName: "摄像头主属性",
|
||||
DataType: "InternalFK",
|
||||
ValueType: "string",
|
||||
InnerAttributeName: "camera",
|
||||
OutEntityName: "Camera",
|
||||
OutEntityPkAttributeName: "id",
|
||||
OutEntityReversalAttributeName: "cameraRecords",
|
||||
};
|
||||
var cameraAttributeInfo = &common.AttributeInfo {
|
||||
ColumnName: "",
|
||||
Name: "camera",
|
||||
DisplayName: "摄像头",
|
||||
DataType: "InternalRef",
|
||||
ValueType: "",
|
||||
InnerAttributeName: "idCamera",
|
||||
OutEntityName: "Camera",
|
||||
OutEntityPkAttributeName: "id",
|
||||
OutEntityReversalAttributeName: "cameraRecords",
|
||||
};
|
||||
var entityDesc = &common.EntityDesc {
|
||||
EntityInfo: entityInfo,
|
||||
PkAttributeInfo: idCameraRecordAttributeInfo,
|
||||
NormalFkIdAttributeInfos: []*common.AttributeInfo{
|
||||
idCameraAttributeInfo,
|
||||
},
|
||||
NormalFkAttributeInfos: []*common.AttributeInfo{
|
||||
cameraAttributeInfo,
|
||||
},
|
||||
NormalChildren: []*common.AttributeInfo{
|
||||
},
|
||||
NormalOne2OneChildren: []*common.AttributeInfo{
|
||||
},
|
||||
AttributeInfoMap: map[string]*common.AttributeInfo{
|
||||
"idCameraRecord": idCameraRecordAttributeInfo,
|
||||
"created": createdAttributeInfo,
|
||||
"tempFileName": tempFileNameAttributeInfo,
|
||||
"fgTemp": fgTempAttributeInfo,
|
||||
"fileName": fileNameAttributeInfo,
|
||||
"fgRemove": fgRemoveAttributeInfo,
|
||||
"duration": durationAttributeInfo,
|
||||
"startTime": startTimeAttributeInfo,
|
||||
"endTime": endTimeAttributeInfo,
|
||||
"hasAudio": hasAudioAttributeInfo,
|
||||
"idCamera": idCameraAttributeInfo,
|
||||
"camera": cameraAttributeInfo,
|
||||
},
|
||||
}
|
||||
|
||||
return entityDesc
|
||||
return entityDesc
|
||||
}
|
||||
|
@@ -3,11 +3,10 @@ package entity
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// 摄像头记录
|
||||
type CameraRecord struct {
|
||||
// 记录id
|
||||
IdCameraRecord string `orm:"pk;column(id_camera_record)" json:"idCameraRecord"`
|
||||
IdCameraRecord string `orm:"pk;column(id_camera_record)" json:"idCameraRecord"`
|
||||
// 创建时间:
|
||||
Created time.Time `orm:"column(created)" json:"created"`
|
||||
// 临时文件名称:
|
||||
@@ -24,6 +23,8 @@ type CameraRecord struct {
|
||||
StartTime time.Time `orm:"column(start_time)" json:"startTime"`
|
||||
// 结束时间:
|
||||
EndTime time.Time `orm:"column(end_time)" json:"endTime"`
|
||||
// 是否有音频
|
||||
HasAudio bool `orm:"column(has_audio)" json:"hasAudio"`
|
||||
// 摄像头主属性:
|
||||
IdCamera string `orm:"column(id_camera)" json:"idCamera"`
|
||||
// 摄像头:
|
||||
|
@@ -24,6 +24,8 @@ type CameraRecordPO struct {
|
||||
StartTime time.Time `json:"startTime"`
|
||||
// 结束时间:
|
||||
EndTime time.Time `json:"endTime"`
|
||||
// 是否有音频
|
||||
HasAudio bool `json:"hasAudio"`
|
||||
// 摄像头主属性:
|
||||
IdCamera string `json:"idCamera"`
|
||||
// 摄像头:
|
||||
|
@@ -24,6 +24,8 @@ type CameraRecordVO struct {
|
||||
StartTime time.Time `json:"startTime"`
|
||||
// 结束时间:
|
||||
EndTime time.Time `json:"endTime"`
|
||||
// 是否有音频
|
||||
HasAudio bool `json:"hasAudio"`
|
||||
// 摄像头主属性:
|
||||
IdCamera string `json:"idCamera"`
|
||||
// 摄像头:
|
||||
@@ -52,4 +54,12 @@ type CameraVO struct {
|
||||
Live bool `json:"live"`
|
||||
// 创建时间:
|
||||
Created time.Time `json:"created"`
|
||||
// 加密标志:
|
||||
FgEncrypt bool `json:"fgEncrypt"`
|
||||
// 被动推送rtmp标志
|
||||
FgPassive bool `json:"fgPassive"`
|
||||
// rtmp识别码:
|
||||
RtmpAuthCode string `json:"rtmpAuthCode"`
|
||||
// 摄像头类型:
|
||||
CameraType string `json:"cameraType"`
|
||||
}
|
||||
|
@@ -59,7 +59,7 @@ func CameraRecordBatchDelete(es []entity.CameraRecord) (i int64, err error) {
|
||||
|
||||
func CameraRecordSelectById(id string) (model entity.CameraRecord, err error) {
|
||||
o := orm.NewOrm()
|
||||
model = entity.CameraRecord{IdCameraRecord: id}
|
||||
model = entity.CameraRecord{ IdCameraRecord: id }
|
||||
|
||||
err = o.Read(&model)
|
||||
|
||||
@@ -96,7 +96,7 @@ func CameraRecordSelectByIds(ids []string) (models []entity.CameraRecord, err er
|
||||
// execute the raw query string
|
||||
_, err_query := o.Raw(sqlStr, params...).QueryRows(&models)
|
||||
if err_query != nil {
|
||||
err = fmt.Errorf("selectByIds error: %v", err_make_sql)
|
||||
err = fmt.Errorf("selectByIds error: %v", err_query)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ func CameraRecordFindCollectionByCondition(condition common.AqCondition) (models
|
||||
// execute the raw query string
|
||||
_, err_query := o.Raw(sqlStr, params...).QueryRows(&models)
|
||||
if err_query != nil {
|
||||
err = fmt.Errorf("findCollectionByCondition error: %v", err_make_sql)
|
||||
err = fmt.Errorf("findCollectionByCondition error: %v", err_query)
|
||||
return
|
||||
}
|
||||
return
|
||||
@@ -140,7 +140,7 @@ func CameraRecordFindOneByCondition(condition common.AqCondition) (model entity.
|
||||
models := make([]entity.CameraRecord, 0)
|
||||
_, err_query := o.Raw(sqlStr, params...).QueryRows(&models)
|
||||
if err_query != nil {
|
||||
err = fmt.Errorf("findOneByCondition error: %v", err_make_sql)
|
||||
err = fmt.Errorf("findOneByCondition error: %v", err_query)
|
||||
return
|
||||
}
|
||||
if len(models) < 1 {
|
||||
@@ -184,7 +184,7 @@ func CameraRecordFindPageByCondition(aqPageInfoInput common.AqPageInfoInput) (pa
|
||||
models := make([]entity.CameraRecord, 0)
|
||||
_, err_query := o.Raw(pageSqlStr, params...).QueryRows(&models)
|
||||
if err_query != nil {
|
||||
err = fmt.Errorf("findPageByCondition error: %v", err_make_sql)
|
||||
err = fmt.Errorf("findPageByCondition error: %v", err_query)
|
||||
return
|
||||
}
|
||||
dataList := make([]interface{}, 0)
|
||||
|
Reference in New Issue
Block a user