|
@@ -13,6 +13,9 @@ use Cache, Storage;
|
|
|
use Image as Intervention;
|
|
|
use App\Services\FollowerService;
|
|
|
use App\Services\MediaPathService;
|
|
|
+use FFMpeg;
|
|
|
+use FFMpeg\Coordinate\Dimension;
|
|
|
+use FFMpeg\Format\Video\X264;
|
|
|
|
|
|
class StoryController extends Controller
|
|
|
{
|
|
@@ -49,11 +52,27 @@ class StoryController extends Controller
|
|
|
$story->size = $photo->getSize();
|
|
|
$story->save();
|
|
|
|
|
|
+ $url = $story->path;
|
|
|
+
|
|
|
+ if($story->type === 'video') {
|
|
|
+ $video = FFMpeg::open($path);
|
|
|
+ $width = $video->getVideoStream()->get('width');
|
|
|
+ $height = $video->getVideoStream()->get('height');
|
|
|
+
|
|
|
+
|
|
|
+ if($width !== 1080 || $height !== 1920) {
|
|
|
+ Storage::delete($story->path);
|
|
|
+ $story->delete();
|
|
|
+ abort(422, 'Invalid video dimensions, must be 1080x1920');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return [
|
|
|
'code' => 200,
|
|
|
'msg' => 'Successfully added',
|
|
|
'media_id' => (string) $story->id,
|
|
|
- 'media_url' => url(Storage::url($story->path))
|
|
|
+ 'media_url' => url(Storage::url($url)),
|
|
|
+ 'media_type' => $story->type
|
|
|
];
|
|
|
}
|
|
|
|
|
@@ -108,9 +127,11 @@ class StoryController extends Controller
|
|
|
abort(400, 'Invalid or missing media.');
|
|
|
}
|
|
|
|
|
|
- $img = Intervention::make($path);
|
|
|
- $img->crop($width, $height, $x, $y);
|
|
|
- $img->save($path, config('pixelfed.image_quality'));
|
|
|
+ if($story->type === 'photo') {
|
|
|
+ $img = Intervention::make($path);
|
|
|
+ $img->crop($width, $height, $x, $y);
|
|
|
+ $img->save($path, config('pixelfed.image_quality'));
|
|
|
+ }
|
|
|
|
|
|
return [
|
|
|
'code' => 200,
|
|
@@ -237,6 +258,7 @@ class StoryController extends Controller
|
|
|
'linkText' => null,
|
|
|
'time' => $s->created_at->format('U'),
|
|
|
'expires_at' => (int) $s->expires_at->format('U'),
|
|
|
+ 'created_ago' => $s->created_at->diffForHumans(null, true, true),
|
|
|
'seen' => $s->seen()
|
|
|
];
|
|
|
})->toArray();
|