Showing
7 changed files
with
44 additions
and
47 deletions
... | @@ -181,9 +181,8 @@ class AdminMakeVideoController extends AdminController | ... | @@ -181,9 +181,8 @@ class AdminMakeVideoController extends AdminController |
181 | Storage::disk('public')->delete($immerse->url); | 181 | Storage::disk('public')->delete($immerse->url); |
182 | Storage::disk('public')->delete($immerse->thumbnail); | 182 | Storage::disk('public')->delete($immerse->thumbnail); |
183 | Storage::disk('public')->delete($immerse->bgm); | 183 | Storage::disk('public')->delete($immerse->bgm); |
184 | + $immerse->delete(); | ||
184 | 185 | ||
185 | - | 186 | + return $this->form()->response()->refresh()->success('删除成功'); |
186 | - dd($id); | ||
187 | -// return $this->form()->destroy($id); | ||
188 | } | 187 | } |
189 | } | 188 | } | ... | ... |
... | @@ -4,14 +4,11 @@ namespace App\Http\Controllers\V1; | ... | @@ -4,14 +4,11 @@ namespace App\Http\Controllers\V1; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | use App\Models\Immerse; | 6 | use App\Models\Immerse; |
7 | -use App\Models\UserMakeVideo; | ||
8 | use App\Jobs\UserMakeVideo as MakeVideo; | 7 | use App\Jobs\UserMakeVideo as MakeVideo; |
9 | use App\Jobs\UserMakeImages as MakeImages; | 8 | use App\Jobs\UserMakeImages as MakeImages; |
10 | use Illuminate\Http\Request; | 9 | use Illuminate\Http\Request; |
11 | use Illuminate\Support\Facades\Auth; | 10 | use Illuminate\Support\Facades\Auth; |
12 | -use Illuminate\Support\Facades\Storage; | ||
13 | use Illuminate\Support\Facades\Validator; | 11 | use Illuminate\Support\Facades\Validator; |
14 | -use Illuminate\Support\Str; | ||
15 | use Jiannei\Response\Laravel\Support\Facades\Response; | 12 | use Jiannei\Response\Laravel\Support\Facades\Response; |
16 | 13 | ||
17 | class ImmerseController extends Controller | 14 | class ImmerseController extends Controller |
... | @@ -41,7 +38,7 @@ class ImmerseController extends Controller | ... | @@ -41,7 +38,7 @@ class ImmerseController extends Controller |
41 | 'type' => 'required', | 38 | 'type' => 'required', |
42 | 'content' => 'sometimes', | 39 | 'content' => 'sometimes', |
43 | 'weather' => 'sometimes', | 40 | 'weather' => 'sometimes', |
44 | - 'thumbnail_url' => 'sometimes', | 41 | + 'thumbnail' => 'sometimes', |
45 | ]); | 42 | ]); |
46 | 43 | ||
47 | if ($validator->fails()){ | 44 | if ($validator->fails()){ |
... | @@ -50,10 +47,12 @@ class ImmerseController extends Controller | ... | @@ -50,10 +47,12 @@ class ImmerseController extends Controller |
50 | 47 | ||
51 | $validated = $validator->validated(); | 48 | $validated = $validator->validated(); |
52 | 49 | ||
50 | + $user_id = $request->user()->id; | ||
51 | + | ||
53 | $immerse = Immerse::query()->find($request->item_id); | 52 | $immerse = Immerse::query()->find($request->item_id); |
54 | if ($validated['type'] == 1){ | 53 | if ($validated['type'] == 1){ |
55 | $create = Immerse::query()->create([ | 54 | $create = Immerse::query()->create([ |
56 | - 'user_id' => Auth::user()->getAuthIdentifier(), | 55 | + 'user_id' => $user_id, |
57 | 'title' => '', | 56 | 'title' => '', |
58 | 'content' => $validated['content'], | 57 | 'content' => $validated['content'], |
59 | 'url' => '', | 58 | 'url' => '', |
... | @@ -64,6 +63,7 @@ class ImmerseController extends Controller | ... | @@ -64,6 +63,7 @@ class ImmerseController extends Controller |
64 | 'temp_id' => $immerse->temp_id, | 63 | 'temp_id' => $immerse->temp_id, |
65 | 'thumbnail' => $immerse->thumbnail, | 64 | 'thumbnail' => $immerse->thumbnail, |
66 | 'bgm' => $validated['item_url'], | 65 | 'bgm' => $validated['item_url'], |
66 | + 'state' => 0 | ||
67 | ]); | 67 | ]); |
68 | 68 | ||
69 | // 添加至队列 | 69 | // 添加至队列 |
... | @@ -71,7 +71,7 @@ class ImmerseController extends Controller | ... | @@ -71,7 +71,7 @@ class ImmerseController extends Controller |
71 | }else{ | 71 | }else{ |
72 | // 视频 | 72 | // 视频 |
73 | $create = Immerse::query()->create([ | 73 | $create = Immerse::query()->create([ |
74 | - 'user_id' => Auth::user()->getAuthIdentifier(), | 74 | + 'user_id' => $user_id, |
75 | 'title' => '', | 75 | 'title' => '', |
76 | 'content' => $validated['content'], | 76 | 'content' => $validated['content'], |
77 | 'url' => '', | 77 | 'url' => '', |
... | @@ -82,13 +82,14 @@ class ImmerseController extends Controller | ... | @@ -82,13 +82,14 @@ class ImmerseController extends Controller |
82 | 'temp_id' => $immerse->temp_id, | 82 | 'temp_id' => $immerse->temp_id, |
83 | 'thumbnail' => '', | 83 | 'thumbnail' => '', |
84 | 'bgm' => $immerse->bgm, | 84 | 'bgm' => $immerse->bgm, |
85 | + 'state' => 0 | ||
85 | ]); | 86 | ]); |
86 | 87 | ||
87 | // 添加至队列 | 88 | // 添加至队列 |
88 | MakeVideo::dispatch($create, $validated['item_url']); | 89 | MakeVideo::dispatch($create, $validated['item_url']); |
89 | } | 90 | } |
90 | 91 | ||
91 | - return Response::created($create->id); | 92 | + return Response::created($create); |
92 | } | 93 | } |
93 | 94 | ||
94 | /** | 95 | /** | ... | ... |
... | @@ -144,7 +144,7 @@ class UserController extends Controller | ... | @@ -144,7 +144,7 @@ class UserController extends Controller |
144 | 144 | ||
145 | $user_id = Auth::user()->getAuthIdentifier(); | 145 | $user_id = Auth::user()->getAuthIdentifier(); |
146 | 146 | ||
147 | - $immerse = Immerse::query()->where('user_id', 1); | 147 | + $immerse = Immerse::query()->where('user_id', $user_id); |
148 | switch ($type) | 148 | switch ($type) |
149 | { | 149 | { |
150 | case 0 : // 审核中... | 150 | case 0 : // 审核中... | ... | ... |
... | @@ -2,7 +2,6 @@ | ... | @@ -2,7 +2,6 @@ |
2 | 2 | ||
3 | namespace App\Jobs; | 3 | namespace App\Jobs; |
4 | 4 | ||
5 | -use App\Models\AdminMakeVideo; | ||
6 | use App\Models\Immerse; | 5 | use App\Models\Immerse; |
7 | use App\Models\VideoTemp; | 6 | use App\Models\VideoTemp; |
8 | use Carbon\Carbon; | 7 | use Carbon\Carbon; |
... | @@ -15,6 +14,7 @@ use Illuminate\Queue\SerializesModels; | ... | @@ -15,6 +14,7 @@ use Illuminate\Queue\SerializesModels; |
15 | use Illuminate\Support\Facades\File; | 14 | use Illuminate\Support\Facades\File; |
16 | use Illuminate\Support\Facades\Log; | 15 | use Illuminate\Support\Facades\Log; |
17 | use Illuminate\Support\Facades\Storage; | 16 | use Illuminate\Support\Facades\Storage; |
17 | +use Illuminate\Support\Str; | ||
18 | 18 | ||
19 | class UserMakeImages implements ShouldQueue | 19 | class UserMakeImages implements ShouldQueue |
20 | { | 20 | { |
... | @@ -63,7 +63,8 @@ class UserMakeImages implements ShouldQueue | ... | @@ -63,7 +63,8 @@ class UserMakeImages implements ShouldQueue |
63 | $this->width = $width = $media_info['streams'][0]['width']; | 63 | $this->width = $width = $media_info['streams'][0]['width']; |
64 | $this->height = $height = $media_info['streams'][0]['height']; | 64 | $this->height = $height = $media_info['streams'][0]['height']; |
65 | 65 | ||
66 | - if ($this->immerse->type == 2 && $this->immerse->bgm){ | 66 | + try{ |
67 | + if ($this->immerse->bgm == '' || $this->immerse->bgm == null) { | ||
67 | // 没有背景音,单图一张,输出为单图。 | 68 | // 没有背景音,单图一张,输出为单图。 |
68 | $output = $this->getTempPath('.png',false); | 69 | $output = $this->getTempPath('.png',false); |
69 | $cmd = $this->ffmpeg . ' -y '. | 70 | $cmd = $this->ffmpeg . ' -y '. |
... | @@ -134,12 +135,16 @@ class UserMakeImages implements ShouldQueue | ... | @@ -134,12 +135,16 @@ class UserMakeImages implements ShouldQueue |
134 | $video_info = $this->mediainfo($output); | 135 | $video_info = $this->mediainfo($output); |
135 | } | 136 | } |
136 | 137 | ||
137 | - $this->immerse->query()->update([ | 138 | + $this->immerse->url = Str::of($output)->replace(Storage::disk('public')->path(''), ''); |
138 | - 'url' => str_replace(Storage::disk('public')->path(''),'',$output), | 139 | + $this->immerse->state = 1; |
139 | - 'state' => 1, | 140 | + $this->immerse->duration = $video_info['format']['duration'] ?? 0.00; |
140 | - 'duration' => $video_info['format']['duration'] ?? 0, | 141 | + $this->immerse->size = $video_info['format']['size']; |
141 | - 'size' => $video_info['format']['size'], | 142 | + $this->immerse->save(); |
142 | - ]); | 143 | + }catch (\Exception $exception){ |
144 | + $this->immerse->state = 2; | ||
145 | + $this->immerse->save(); | ||
146 | + Log::channel('daily')->error($exception->getMessage()); | ||
147 | + } | ||
143 | } | 148 | } |
144 | 149 | ||
145 | /*** | 150 | /*** |
... | @@ -249,7 +254,7 @@ class UserMakeImages implements ShouldQueue | ... | @@ -249,7 +254,7 @@ class UserMakeImages implements ShouldQueue |
249 | 254 | ||
250 | public function getTextContentString() | 255 | public function getTextContentString() |
251 | { | 256 | { |
252 | - $components = $this->adminMakeVideo->temp()->first()->components()->get(); | 257 | + $components = $this->immerse->temp()->first()->components()->get(); |
253 | 258 | ||
254 | $font = Storage::disk('public')->path('ffmpeg/arialuni.ttf'); | 259 | $font = Storage::disk('public')->path('ffmpeg/arialuni.ttf'); |
255 | 260 | ||
... | @@ -258,7 +263,7 @@ class UserMakeImages implements ShouldQueue | ... | @@ -258,7 +263,7 @@ class UserMakeImages implements ShouldQueue |
258 | foreach ($components as $component) { | 263 | foreach ($components as $component) { |
259 | switch ($component->name){ | 264 | switch ($component->name){ |
260 | case 'one_poem': | 265 | case 'one_poem': |
261 | - $content = $this->adminMakeVideo->poem->content; | 266 | + $content = $this->immerse->poem->content; |
262 | $text_file = $this->getTempPath('.txt'); | 267 | $text_file = $this->getTempPath('.txt'); |
263 | file_put_contents($text_file, $content); | 268 | file_put_contents($text_file, $content); |
264 | 269 | ||
... | @@ -310,7 +315,7 @@ class UserMakeImages implements ShouldQueue | ... | @@ -310,7 +315,7 @@ class UserMakeImages implements ShouldQueue |
310 | 'box=1:boxcolor=' . $text_bg_color . '@' . $opacity . '", '; | 315 | 'box=1:boxcolor=' . $text_bg_color . '@' . $opacity . '", '; |
311 | break; | 316 | break; |
312 | case 'feel': | 317 | case 'feel': |
313 | - $content = $this->adminMakeVideo->feel; | 318 | + $content = $this->immerse->feel; |
314 | $text_color = $component->text_color ?? 'white'; | 319 | $text_color = $component->text_color ?? 'white'; |
315 | $text_bg_color = $component->text_bg_color ?? '0xd0cdcc'; | 320 | $text_bg_color = $component->text_bg_color ?? '0xd0cdcc'; |
316 | $opacity = $component->opacity ? $component->opacity / 100 : '0.5'; | 321 | $opacity = $component->opacity ? $component->opacity / 100 : '0.5'; | ... | ... |
... | @@ -15,6 +15,7 @@ use Illuminate\Queue\InteractsWithQueue; | ... | @@ -15,6 +15,7 @@ use Illuminate\Queue\InteractsWithQueue; |
15 | use Illuminate\Queue\SerializesModels; | 15 | use Illuminate\Queue\SerializesModels; |
16 | use Illuminate\Support\Facades\Log; | 16 | use Illuminate\Support\Facades\Log; |
17 | use Illuminate\Support\Facades\Storage; | 17 | use Illuminate\Support\Facades\Storage; |
18 | +use Illuminate\Support\Str; | ||
18 | 19 | ||
19 | class UserMakeVideo implements ShouldQueue | 20 | class UserMakeVideo implements ShouldQueue |
20 | { | 21 | { |
... | @@ -56,7 +57,7 @@ class UserMakeVideo implements ShouldQueue | ... | @@ -56,7 +57,7 @@ class UserMakeVideo implements ShouldQueue |
56 | public function handle() | 57 | public function handle() |
57 | { | 58 | { |
58 | $file = Storage::disk('public')->path($this->resource_url); | 59 | $file = Storage::disk('public')->path($this->resource_url); |
59 | - $is_bgm = isset($this->immerse->bgm); | 60 | + $is_bgm = isset($this->immerse->bgm) && $this->immerse->bgm != ''; |
60 | $bgm = Storage::disk('public')->path($this->immerse->bgm); | 61 | $bgm = Storage::disk('public')->path($this->immerse->bgm); |
61 | 62 | ||
62 | // 1.getmediainfo 记录时长,音频视频取最长。 | 63 | // 1.getmediainfo 记录时长,音频视频取最长。 |
... | @@ -119,12 +120,13 @@ class UserMakeVideo implements ShouldQueue | ... | @@ -119,12 +120,13 @@ class UserMakeVideo implements ShouldQueue |
119 | return; | 120 | return; |
120 | } | 121 | } |
121 | 122 | ||
123 | + try{ | ||
122 | $end_wallpaper = Storage::disk('public')->path('ffmpeg') . "/end_wallpaper.png"; | 124 | $end_wallpaper = Storage::disk('public')->path('ffmpeg') . "/end_wallpaper.png"; |
123 | $thumbnail = Storage::disk('public')->path('ffmpeg') . "/thumbnail.png"; | 125 | $thumbnail = Storage::disk('public')->path('ffmpeg') . "/thumbnail.png"; |
124 | $font = Storage::disk('public')->path('ffmpeg') . "/arialuni.ttf"; | 126 | $font = Storage::disk('public')->path('ffmpeg') . "/arialuni.ttf"; |
125 | 127 | ||
126 | $user = User::query()->find($this->immerse->user_id); | 128 | $user = User::query()->find($this->immerse->user_id); |
127 | - $signature = $user->nickname; | 129 | + $signature = $user->nickname ?? $user->email; |
128 | 130 | ||
129 | // 生成贴纸和签名 | 131 | // 生成贴纸和签名 |
130 | $end_wallpaper = $this->wallpaperWithSignature($end_wallpaper, $thumbnail, $signature, $font); | 132 | $end_wallpaper = $this->wallpaperWithSignature($end_wallpaper, $thumbnail, $signature, $font); |
... | @@ -170,12 +172,16 @@ class UserMakeVideo implements ShouldQueue | ... | @@ -170,12 +172,16 @@ class UserMakeVideo implements ShouldQueue |
170 | // 全部合成以后创建 临境 | 172 | // 全部合成以后创建 临境 |
171 | $video_info = $this->mediainfo($video); | 173 | $video_info = $this->mediainfo($video); |
172 | 174 | ||
173 | - $this->immerse->query()->update([ | 175 | + $this->immerse->url = Str::of($video)->replace(Storage::disk('public')->path(''), ''); |
174 | - 'url' => str_replace(Storage::disk('public')->path(''),'',$output), | 176 | + $this->immerse->state = 1; |
175 | - 'state' => 1, | 177 | + $this->immerse->duration = $video_info['format']['duration'] ?? 0.00; |
176 | - 'duration' => $video_info['format']['duration'] ?? 0, | 178 | + $this->immerse->size = $video_info['format']['size']; |
177 | - 'size' => $video_info['format']['size'], | 179 | + $this->immerse->save(); |
178 | - ]); | 180 | + }catch (\Exception $exception){ |
181 | + $this->immerse->state = 2; | ||
182 | + $this->immerse->save(); | ||
183 | + Log::channel('daily')->error($exception->getMessage()); | ||
184 | + } | ||
179 | 185 | ||
180 | return; | 186 | return; |
181 | } | 187 | } |
... | @@ -677,6 +683,6 @@ class UserMakeVideo implements ShouldQueue | ... | @@ -677,6 +683,6 @@ class UserMakeVideo implements ShouldQueue |
677 | } | 683 | } |
678 | } | 684 | } |
679 | 685 | ||
680 | - return ceil($this->width * $width / 10 / $max_len); | 686 | + return ceil($this->width * $width / 100 / $max_len); |
681 | } | 687 | } |
682 | } | 688 | } | ... | ... |
... | @@ -27,20 +27,6 @@ class Immerse extends Model | ... | @@ -27,20 +27,6 @@ class Immerse extends Model |
27 | return Storage::disk('public')->url($url); | 27 | return Storage::disk('public')->url($url); |
28 | } | 28 | } |
29 | 29 | ||
30 | - public function getThumbnailAttribute($url) | ||
31 | - { | ||
32 | - | ||
33 | - if ($url == '') return $url; | ||
34 | - | ||
35 | - return Storage::disk('public')->url($url); | ||
36 | - } | ||
37 | - | ||
38 | - public function getBgmAttribute($url) | ||
39 | - { | ||
40 | - if ($url == '') return $url; | ||
41 | - | ||
42 | - return Storage::disk('public')->url($url); | ||
43 | - } | ||
44 | 30 | ||
45 | public function poem() | 31 | public function poem() |
46 | { | 32 | { | ... | ... |
... | @@ -40,12 +40,12 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Route | ... | @@ -40,12 +40,12 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Route |
40 | /** 用户信息*/ | 40 | /** 用户信息*/ |
41 | $api->get('/user', 'UserController@user')->middleware('auth:sanctum'); | 41 | $api->get('/user', 'UserController@user')->middleware('auth:sanctum'); |
42 | 42 | ||
43 | - /** 上传作品 */ | 43 | + /** 我的作品 */ |
44 | $api->get('/my/videos', 'UserController@videos')->middleware('auth:sanctum'); | 44 | $api->get('/my/videos', 'UserController@videos')->middleware('auth:sanctum'); |
45 | 45 | ||
46 | 46 | ||
47 | /** 临境 */ | 47 | /** 临境 */ |
48 | - $api->apiResource('/immersive', 'ImmerseController'); | 48 | + $api->apiResource('/immersive', 'ImmerseController')->middleware('auth:sanctum'); |
49 | 49 | ||
50 | /** 众妙 */ | 50 | /** 众妙 */ |
51 | $api->get('/packpoem', 'HomeController@packpoem'); | 51 | $api->get('/packpoem', 'HomeController@packpoem'); | ... | ... |
-
Please register or login to post a comment