videoplayer/handler/video.go

91 lines
2.3 KiB
Go
Raw Normal View History

package handler
import (
"github.com/gin-gonic/gin"
"net/http"
"os"
"time"
"videoplayer/service"
)
type gvlReq struct {
StartTime string `json:"begin"`
EndTime string `json:"end"`
IP string `json:"ip"`
Token string `json:"token"`
}
type videoReq struct {
CameraID int `json:"camera_id"`
VideoPath string `json:"video_path"`
VideoName string `json:"video_name"`
AuthId int `json:"auth_id"`
Human int `json:"human"`
IsDelete int `json:"is_delete"`
CreateTime string `json:"create_time"`
EndTime string `json:"end_time"`
DeleteTime string `json:"delete_time"`
FileSize int `json:"file_size"`
}
type videoPReq struct {
ID int `json:"id"`
Token string `json:"token"`
AuthId string `json:"userId"`
IP string `json:"ip"`
}
func SetUpVideoGroup(router *gin.Engine) {
videoGroup := router.Group("/video")
videoGroup.POST("/get_video_list", GetVideoList)
videoGroup.POST("/create", CreateVideo)
videoGroup.GET("/mp4", GetVideo)
}
func GetVideo(c *gin.Context) {
var vp_req videoPReq
if err := c.ShouldBindQuery(&vp_req); err == nil {
video := service.GetVideo(vp_req.ID, c.GetInt("id"))
name := video.VideoName
path := video.VideoPath
if video.IsDelete == 0 {
// 打开文件
file, err := os.Open(path + name)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
defer file.Close()
// 设置响应头
c.Header("Content-Type", "video/mp4")
// 开始传输文件
http.ServeContent(c.Writer, c.Request, name, time.Now(), file) // 传输文件, 传输文件的内容类型, 文件名, 文件最后修改时间, 文件
// 返回文件
c.JSON(http.StatusOK, gin.H{"message": "success", "code": 200})
} else {
c.JSON(http.StatusBadRequest, gin.H{"error": "video is deleted"})
}
} else {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
}
func CreateVideo(c *gin.Context) {
var video_req videoReq
if err := c.ShouldBindJSON(&video_req); err == nil {
} else {
}
}
func GetVideoList(c *gin.Context) {
var gvl_req gvlReq
if err := c.ShouldBindJSON(&gvl_req); err == nil {
videos := service.GetVideoList(1)
c.JSON(http.StatusOK, gin.H{"videos": videos, "code": 0, "message": "success"})
} else {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "code": 1, "message": "failed"})
}
}