Добавить пользовательский VideoGenerator Медиатека Laravel Spatie

Используя медиа-библиотеку Spatie в одном из моих проектов, я хочу добавить конверсии видео. когда видео загружено, добавьте видео с другим разрешением в эту конкретную папку медиаконверсий.

// функция загрузки видео с контроллера

public function uploadVideo(UploadVideoRequest $request, ListingStatusService $listingStatusService)
{
    $response = \DB::transaction(function() use($request, $listingStatusService) {
        $listing = Listing::find($request->get('listing_id'));

        if (!$listing->remaining_video)
            return response()->json([
                'success' => 0,
                'message' => 'The video may not have more than 3 items.'
            ]);

        $fileName = rand(1111, 9999) . '_' . time() . '.' . $request->file('video')->getClientOriginalExtension();
        if ($request->get('template_type') == VideoTemplate::TEMPLATE_BASIC) {
            $media = $listing->addMedia($request->file('video'))->usingFileName($fileName)
                ->withCustomProperties([
                    'templateType' => $request->get('template_type')
                ])
                ->toMediaCollection('listing_videos');
        } else {
            $media = $listing->addMedia($request->file('video'))->usingFileName($fileName)
                ->withCustomProperties([
                    'templateType' => $request->get('template_type'),
                    'shots' => $request->get('shots'),
                    'seconds' => $request->get('seconds'),
                    'volume' => $request->get('volume')
                ])
                ->toMediaCollection('listing_videos');
        }

        exec('ffmpeg -i '.$request->file('video').' -s 1040x480 -vcodec h264 -acodec copy '.Storage::putFile('listing/'.$listing->id.'/'.$media->id.'/conversions', '1040x480.mp4'));

        $listing->remaining_video = $listing->remaining_video - 1;
        $listing->save();

        $listingStatusService->saveListingStatus(
            new ListingStatus(),
            $listing->id,
            Listing::ITEM_TYPE_VIDEOS,
            $media->id,
            Listing::STATUS_SUBMITTED
        );

        return response()->json([
            'success' => 1,
        ]);
    });

    return $response;
}

// распечатка модели

class Listing extends Model implements HasMediaConversions{
    use HasMediaTrait;
    use MediaBaseConversions;

public function registerMediaConversions(Media $media = null)
{
    $listingStatus = ListingStatus::where('item_id', $media->id)->where('status', self::STATUS_APPROVED)->whereNotNull('review_by')->first();
    if ($listingStatus)
        $this->registerBaseConversions(true);
}

}

Итак, как сделать конверсию для видео?

Помогите мне, пожалуйста.

Заранее спасибо!

0 ответов

Другие вопросы по тегам