laravel - 添加自定义 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);
}
}
那么,如何进行视频转换?
请帮我。
提前致谢!
解决方案
推荐阅读
- neo4j - 为空值创建节点
- node.js - 更新到节点 10 后 Firebase 函数错误
- ruby-on-rails - 如何从发现页面中排除当前用户已经关注的用户?
- java - 在存储过程中拥有大部分逻辑时,我应该使用 JDBC 还是 Hibernate?
- apache-spark - 是否可以在开发人员之间共享/访问 hdfs?
- .net - 如何在 Windows 10 上的 Visual Studio 2017 中卸载 .NET Framework 4.8?
- c - libx11 无法在 Fedora OS C 上截屏
- firebase - 云函数中的批量写入或事务?
- laravel - 如何使用 post 方法在 ionViewWillEnter 中显示离子数据?
- kotlin - 如何使用 Kotlin/Native 应用程序将字符串写入剪贴板(Windows 操作系统)?