针对问题:
弱网环境下或手机网络播放mp4格式视频卡顿。
存储环境:腾讯云对象存储。
处理流程:
1:登录腾讯云控制台,进入对象存储服务,找到对应的存储桶,点击进入。
在任务与工作流选项卡中找到工作流管理,点击进入,创建工作流。
填写工作流名称,选择默认音视频文件,点击配置工作流中 输入后面的蓝色加号创建转码任务。
根据实际业务需要选择要不要进行回调配置。
如果不需要判断任务是否执行成功,直接选择不需要回调保存即可。
如果需要判断任务是否执行成功,选择自定义回调配置,并配置回调url地址,url地址根据自己服务器路由进行配置。
任务完成回调:文件上传之后立即转码。
工作流完成回调:整个工作流处理完回调。
点击测试,可在存储桶内选择视频文件进行mp4->m3u8转换测试。
点击左侧的任务管理,可以看格式转换执行的结果,也可以查看任务详情和预览m3u8格式的播放。
如果配置了回调地址,也可以查看回调日志有没有产生。
测试成功之后,可以将工作流打开,这样存储桶有视频文件存入时,工作流就会实时把存入的视频文件进行转码了。
2:回调参考代码:
$request = file_get_contents("php://input");
file_put_contents(CMF_ROOT.'data/log/videobacklog/callback_'.date('Y-m-d').'.txt',date('Y-m-d H:i:s').' request:'.$request."\r\n",FILE_APPEND);
if($request){
$res_arr = json_decode($request,true);
if(isset($res_arr['JobsDetail'][0])){
$obj = $res_arr['JobsDetail'][0];
if($obj['Code'] == 'Success'){
$file_name = $obj['Operation']['MediaResult']['OutputFile']['ObjectName'][0];
$file_arr = explode(".", $file_name);
$old_file_name = $file_arr[0].'.mp4';
$map=[];
$map[]=['href','like','%'.$old_file_name.'%'];
$result = Db::name("user_video")->where($map)->update(['is_transcode'=>1]);
file_put_contents(CMF_ROOT.'data/log/videobacklog/callback_'.date('Y-m-d').'.txt',date('Y-m-d H:i:s').' 数据库处理结果:result:'.$result."\r\n",FILE_APPEND);
}
}
}