李帅

1.继续调试ffmpeg命令

...@@ -77,50 +77,51 @@ class MakeVideo implements ShouldQueue ...@@ -77,50 +77,51 @@ class MakeVideo implements ShouldQueue
77 $animate = $this->makeAnimate($last_frame_video, $end_wallpaper, '', $signature_x, $signature_y, $font); 77 $animate = $this->makeAnimate($last_frame_video, $end_wallpaper, '', $signature_x, $signature_y, $font);
78 } 78 }
79 79
80 -
81 $video = $this->getTempPath(); 80 $video = $this->getTempPath();
82 - $watermark_x = $watermark_x ? $watermark_x : 0; 81 + $cmd = $this->ffmpeg . ' -y ' .
83 - $watermark_y = $watermark_y ? $watermark_y : 0;
84 - $am_inp = ' -i ' . escapeshellarg($watermark);
85 - $am_filter = "[2:v]overlay={$watermark_x}:{$watermark_y}[water];[water]";
86 -
87 - $cmd = $this->ffmpeg . ' -y' .
88 ' -i ' . escapeshellarg($file) . 82 ' -i ' . escapeshellarg($file) .
89 ' -i ' . escapeshellarg($animate) . 83 ' -i ' . escapeshellarg($animate) .
90 - $am_inp . 84 + ' -i ' . escapeshellarg($watermark) .
91 - ' -filter_complex "[0:0]' . '' . $am_filter . '[0:1] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a]"' . 85 +
92 - ' -map [v] -map [a]'; 86 + ' -filter_complex "[0:0] ' .
93 - $cmd .= 87 + 'drawtext="' .
94 - ' -c:v libx264 -s 800x450 -bt 256k -r 25' . 88 + 'fontfile=' . escapeshellarg($font) . ':' .
89 + 'text=' . escapeshellarg($content) . ':' .
90 + 'fontsize=43:' .
91 + 'fontcolor=white@1.0:' .
92 + 'x=main_w/2' . '-260' . ':' .
93 + 'y=main_h/2' . '-20' . ':' .
94 + 'box=1:boxcolor=0xd0cdcc@0.5' .
95 + '" [text];' .
96 + '[text] [2:v]overlay=' . $watermark_x . ':' . $watermark_y . '[water];[water][0:1][1:0][1:1] concat=n=2:v=1:a=1[v][a]" ' .
97 + ' -map [v] -map [a]' .
98 + ' -c:v libx264 -bt 256k -r 25' .
95 ' -ar 44100 -ac 2 -qmin 30 -qmax 60 -profile:v baseline -preset fast ' . 99 ' -ar 44100 -ac 2 -qmin 30 -qmax 60 -profile:v baseline -preset fast ' .
96 escapeshellarg($video); 100 escapeshellarg($video);
97 101
98 - // 执行合成
99 $this->execmd($cmd); 102 $this->execmd($cmd);
100 103
101 - $video2 = $this->getTempPath(); 104 + if ( $adminMakeVideo->thumbnail == 1 && $adminMakeVideo->thumbnail_url){
102 - $cmd = $this->ffmpeg . ' -y -i ' . escapeshellarg($video) . 105 + $video_temp = $video;
103 - ' -vf '. 106 + $video = $this->getTempPath();
104 - 'drawtext="'. 107 +
105 - 'fontfile=' . escapeshellarg($font) . ':'. 108 + $cmd = $this->ffmpeg. ' -y'.
106 - 'text=' . escapeshellarg($content) . ':'. 109 + ' -i ' . escapeshellarg($video_temp).
107 - 'fontsize=43:'. 110 + ' -i ' . escapeshellarg(Storage::disk('public')->path($adminMakeVideo->thumbnail_url)).
108 - 'fontcolor=white@1.0:'. 111 + ' -map 1 -map 0 -c copy -disposition:0 attached_pic '.
109 - 'x=main_w/2' . '-260' . ':'. 112 + escapeshellarg($video);
110 - 'y=main_h/2' . '-20' . ':'.
111 - 'box=1:boxcolor=0xd0cdcc@0.5'.
112 - '" ' . escapeshellarg($video2);
113 113
114 $this->execmd($cmd); 114 $this->execmd($cmd);
115 + }
115 116
116 // 全部合成以后创建 临境 117 // 全部合成以后创建 临境
117 - $video_info = $this->mediainfo($video2); 118 + $video_info = $this->mediainfo($video);
118 119
119 Immerse::query()->create([ 120 Immerse::query()->create([
120 'user_id' => 1, 121 'user_id' => 1,
121 'title' => '', 122 'title' => '',
122 'content' => $this->adminMakeVideo->feel, 123 'content' => $this->adminMakeVideo->feel,
123 - 'url' => $video2, 124 + 'url' => $video,
124 'type' => $this->adminMakeVideo->type == 1 ? 2 : 1, 125 'type' => $this->adminMakeVideo->type == 1 ? 2 : 1,
125 'duration' => $video_info['format']['duration'], 126 'duration' => $video_info['format']['duration'],
126 'size' => $video_info['format']['size'], 127 'size' => $video_info['format']['size'],
......
...@@ -174,7 +174,7 @@ return [ ...@@ -174,7 +174,7 @@ return [
174 'maxJobs' => 0, 174 'maxJobs' => 0,
175 'memory' => 128, 175 'memory' => 128,
176 'tries' => 1, 176 'tries' => 1,
177 - 'timeout' => 60, 177 + 'timeout' => 180,
178 'nice' => 0, 178 'nice' => 0,
179 ], 179 ],
180 ], 180 ],
......