diff --git a/backend/modules/medias/controller.go b/backend/modules/medias/controller.go index 5a39880..dd302bf 100644 --- a/backend/modules/medias/controller.go +++ b/backend/modules/medias/controller.go @@ -82,7 +82,6 @@ func (c *Controller) MediaIndex(ctx fiber.Ctx) error { if claim == nil { return errorx.RequestUnAuthorized } - // c.Locals(consts.CtxKeyJwt, token) token := fiber.Locals[string](ctx, consts.CtxKeyJwt) model, err := c.svc.GetMediaByHash(ctx.Context(), claim.TenantID, hash) @@ -103,6 +102,7 @@ func (c *Controller) MediaIndex(ctx fiber.Ctx) error { return err } + ctx.Set("Content-Type", "application/vnd.apple.mpegurl") return ctx.SendString(playlist.String()) } @@ -133,6 +133,7 @@ func (c *Controller) MediaSegment(ctx fiber.Ctx) error { } filepath := c.svc.GetSegmentPath(ctx.Context(), mediaType, model.TenantID, model.Hash, segments[0]) + ctx.Set("Content-Type", "video/mp2t") return ctx.SendFile(filepath) } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index c96ff0c..32ae2a3 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "dependencies": { "axios": "^1.7.9", + "dplayer": "^1.27.1", "hls.js": "^0.8.5", "pinia": "^2.2.6", "vant": "^4.9.9", @@ -871,6 +872,12 @@ "dev": true, "license": "MIT" }, + "node_modules/balloon-css": { + "version": "1.2.0", + "resolved": "https://npm.hub.ipao.vip/repository/npm/balloon-css/-/balloon-css-1.2.0.tgz", + "integrity": "sha512-urXwkHgwp6GsXVF+it01485Z2Cj4pnW02ICnM0TemOlkKmCNnDLmyy+ZZiRXBpwldUXO+aRNr7Hdia4CBvXJ5A==", + "license": "MIT" + }, "node_modules/binary-extensions": { "version": "2.3.0", "dev": true, @@ -1108,6 +1115,28 @@ "node": ">=0.4.0" } }, + "node_modules/dplayer": { + "version": "1.27.1", + "resolved": "https://npm.hub.ipao.vip/repository/npm/dplayer/-/dplayer-1.27.1.tgz", + "integrity": "sha512-2laBMXs5V1B9zPwJ7eAIw/OBo+Xjvy03i4GHTk3Cg+IWbrq8rKMFO0fFr6ClAYotYOCcFGOvaJDkOZcgKllsCA==", + "license": "MIT", + "dependencies": { + "axios": "1.2.3", + "balloon-css": "^1.0.3", + "promise-polyfill": "8.3.0" + } + }, + "node_modules/dplayer/node_modules/axios": { + "version": "1.2.3", + "resolved": "https://npm.hub.ipao.vip/repository/npm/axios/-/axios-1.2.3.tgz", + "integrity": "sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.66", "dev": true, @@ -1997,6 +2026,12 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/promise-polyfill": { + "version": "8.3.0", + "resolved": "https://npm.hub.ipao.vip/repository/npm/promise-polyfill/-/promise-polyfill-8.3.0.tgz", + "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==", + "license": "MIT" + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://npm.hub.ipao.vip/repository/npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index cf65019..289ec9b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,12 +4,13 @@ "private": true, "type": "module", "scripts": { - "dev": "vite", + "dev": "vite --host 0.0.0.0", "build": "vite build", "preview": "vite preview" }, "dependencies": { "axios": "^1.7.9", + "dplayer": "^1.27.1", "hls.js": "^0.8.5", "pinia": "^2.2.6", "vant": "^4.9.9", @@ -25,4 +26,4 @@ "vite": "^5.4.10", "vite-plugin-vue-devtools": "^7.5.4" } -} +} \ No newline at end of file diff --git a/frontend/src/views/PlayView.vue b/frontend/src/views/PlayView.vue index 0ab2d8c..7217c6e 100644 --- a/frontend/src/views/PlayView.vue +++ b/frontend/src/views/PlayView.vue @@ -1,6 +1,7 @@