李帅

1.首页接口实现。

2.支持用户端上传。
...@@ -8,6 +8,7 @@ use App\Models\VideoTemp; ...@@ -8,6 +8,7 @@ use App\Models\VideoTemp;
8 use Carbon\Carbon; 8 use Carbon\Carbon;
9 use Illuminate\Console\Command; 9 use Illuminate\Console\Command;
10 use Illuminate\Support\Facades\Storage; 10 use Illuminate\Support\Facades\Storage;
11 +use Illuminate\Support\Str;
11 use voku\helper\ASCII; 12 use voku\helper\ASCII;
12 13
13 class DevFFmpeg extends Command 14 class DevFFmpeg extends Command
...@@ -49,10 +50,7 @@ class DevFFmpeg extends Command ...@@ -49,10 +50,7 @@ class DevFFmpeg extends Command
49 */ 50 */
50 public function handle() 51 public function handle()
51 { 52 {
52 - $a = <<<AAA 53 + dd(Str::contains("/Users/lishuai/Documents/source/OnePoem-Server/storage/app/public/ffmpeg/output_16479198841364.mp4",'/storage/app/public/'));
53 -/usr/bin/ffmpeg -y -i '/usr/local/nginx/html/OnePoem/storage/app/public/files/65f944c1bf4458a324440ceea44c993c.mp4' -i '/usr/local/nginx/html/OnePoem/storage/app/public/temp/88/350/output_1649906074717.mp4' -i '/usr/local/nginx/html/OnePoem/storage/app/public/ffmpeg/LOGO_eng.png' -filter_complex "[0:0]drawtext="fontfile='/usr/local/nginx/html/OnePoem/storage/app/public/ffmpeg/arialuni.ttf':text='佳节清明桃李笑,野田荒冢只生愁。\\n雷惊天地龙蛇蛰,雨足郊原草木柔。\\n人乞祭余骄妾妇,士甘焚死不公侯。\\n贤愚千载知谁是,满眼蓬蒿共一丘。\\n':fontsize=26:fontcolor=white@1.0:x='(w-text_w)/2':y='(h-text_h)/2':box=1:boxcolor=0xd0cdcc@0.5",drawtext="fontfile='/usr/local/nginx/html/OnePoem/storage/app/public/ffmpeg/arialuni.ttf':text='2022年04月14日11时':fontsize=31:fontcolor=white@1.0:x='(w-text_w)/2':y='text_h':box=1:boxcolor=0xd0cdcc@0.5",drawtext="fontfile='/usr/local/nginx/html/OnePoem/storage/app/public/ffmpeg/arialuni.ttf':text='测试有感文本,这里是十五个字。':fontsize=29:fontcolor=white@1.0:x='(w-text_w)/2':y='h-text_h*2':box=1:boxcolor=0xd0cdcc@0.5" [text];[text] [2:v]overlay=20:20[water];[water][0:1][1:0][1:1] concat=n=2:v=1:a=1[v][a]" -map [v] -map [a] -c:v libx264 -bt 256k -r 25 -ar 44100 -ac 2 -qmin 30 -qmax 60 -profile:v baseline -preset fast '/usr/local/nginx/html/OnePoem/storage/app/public/video/181/141/output_16499060769238.mp4'
54 -AAA;
55 -
56 54
57 $path = '/Users/lishuai/Desktop/test/'; 55 $path = '/Users/lishuai/Desktop/test/';
58 $file = $path . 'qinghuaci.mp4'; 56 $file = $path . 'qinghuaci.mp4';
......
...@@ -19,10 +19,10 @@ class HomeController extends Controller ...@@ -19,10 +19,10 @@ class HomeController extends Controller
19 public function index() 19 public function index()
20 { 20 {
21 // admin video 21 // admin video
22 - 22 + $lists = Immerse::query()->get();
23 23
24 // user video 24 // user video
25 - return Response::success(Immerse::query()->get()); 25 + return Response::success();
26 } 26 }
27 27
28 28
......
...@@ -7,7 +7,9 @@ use App\Models\Immerse; ...@@ -7,7 +7,9 @@ use App\Models\Immerse;
7 use App\Models\UserMakeVideo; 7 use App\Models\UserMakeVideo;
8 use App\Jobs\UserMakeVideo as MakeVideo; 8 use App\Jobs\UserMakeVideo as MakeVideo;
9 use Illuminate\Http\Request; 9 use Illuminate\Http\Request;
10 +use Illuminate\Support\Facades\Storage;
10 use Illuminate\Support\Facades\Validator; 11 use Illuminate\Support\Facades\Validator;
12 +use Illuminate\Support\Str;
11 use Jiannei\Response\Laravel\Support\Facades\Response; 13 use Jiannei\Response\Laravel\Support\Facades\Response;
12 14
13 class ImmerseController extends Controller 15 class ImmerseController extends Controller
...@@ -45,13 +47,20 @@ class ImmerseController extends Controller ...@@ -45,13 +47,20 @@ class ImmerseController extends Controller
45 47
46 $validated = $validator->validated(); 48 $validated = $validator->validated();
47 49
50 + if (Str::contains($validated['video_url'],'//')){
51 + $video_url = '' ;
52 + }elseif (Str::contains($validated['video_url'],'/storage/app/public/')){
53 + $video_url = $validated['video_url'];
54 + }else{
55 + $video_url = Storage::disk('public')->path($validated['video_url']);
56 + }
48 57
49 $immerse = Immerse::query()->find($request->video_id); 58 $immerse = Immerse::query()->find($request->video_id);
50 59
51 $video = UserMakeVideo::query()->create([ 60 $video = UserMakeVideo::query()->create([
52 'poem_id' => $immerse->poem_id, 61 'poem_id' => $immerse->poem_id,
53 'type' => $immerse->type, 62 'type' => $immerse->type,
54 - 'video_url' => $validated['video_url'], 63 + 'video_url' => $video_url,
55 'image_url' => $immerse->image_url, 64 'image_url' => $immerse->image_url,
56 'bg_music' => $immerse->bg_music, 65 'bg_music' => $immerse->bg_music,
57 'bgm_url' => $immerse->bgm_url, 66 'bgm_url' => $immerse->bgm_url,
......
...@@ -5,6 +5,8 @@ namespace App\Models; ...@@ -5,6 +5,8 @@ namespace App\Models;
5 use Dcat\Admin\Traits\HasDateTimeFormatter; 5 use Dcat\Admin\Traits\HasDateTimeFormatter;
6 6
7 use Illuminate\Database\Eloquent\Model; 7 use Illuminate\Database\Eloquent\Model;
8 +use Illuminate\Support\Facades\Storage;
9 +use Illuminate\Support\Str;
8 10
9 class Immerse extends Model 11 class Immerse extends Model
10 { 12 {
...@@ -17,4 +19,24 @@ class Immerse extends Model ...@@ -17,4 +19,24 @@ class Immerse extends Model
17 { 19 {
18 20
19 } 21 }
22 +
23 + public function getUrlAttribute($url)
24 + {
25 + if (Str::contains($url, '/storage/app/public/')) {
26 + $str = Str::of($url)->replace('/usr/local/nginx/html/OnePoem/', '');
27 + return Storage::disk('public')->url($str);
28 + } else {
29 + return $url;
30 + }
31 + }
32 +
33 + public function getThumbnailAttribute($url)
34 + {
35 + if (Str::contains($url, '/storage/app/public/')) {
36 + $str = Str::of($url)->replace('/usr/local/nginx/html/OnePoem/', '');
37 + return Storage::disk('public')->url($str);
38 + } else {
39 + return $url;
40 + }
41 + }
20 } 42 }
......
...@@ -45,7 +45,7 @@ class User extends Authenticatable ...@@ -45,7 +45,7 @@ class User extends Authenticatable
45 return admin_asset('@admin/images/default-avatar.jpg'); 45 return admin_asset('@admin/images/default-avatar.jpg');
46 } 46 }
47 47
48 - if (Str::contains('//',$avatar)){ 48 + if (Str::contains($avatar,'//')){
49 return $avatar; 49 return $avatar;
50 } 50 }
51 51
......