视频截帧功能可以从视频流中截取指定时刻的单帧画面,并按指定大小缩放成图片。本文介绍如何通过 TOS PHP SDK 进行视频截帧。
以下代码展示如何截取第 30000ms 的视频帧,并将截取后的图片下载到本地。
<?php // 假设使用源码安装且需要集成 SDK 的脚本与 TOS PHP SDK 的源码在同一个父目录下。 require_once __DIR__ . '/autoload.php'; use Tos\TosClient; use Tos\Exception\TosClientException; use Tos\Exception\TosServerException; use Tos\Model\HeadObjectInput; use Tos\Model\GetObjectInput; $output = null; try { $client = new TosClient([ 'region' => 'your region', 'endpoint' => 'your endpoint', // 从环境变量中获取访问密钥 'ak' => getenv('TOS_ACCESS_KEY'), 'sk' => getenv('TOS_SECRET_KEY'), ]); $input = new GetObjectInput('bucket-test', 'key-test'); // 执行视频截祯操作。 $input->setProcess('video/snapshot,t_30000'); // 执行视频截祯操作后,将获取到的图片保存至指定的存储桶。执行图片保存操作的账号必须拥有图片转存的目标桶的写权限。 // $input->setSaveBucket(base64_encode('bucket-test2')); // $input->setSaveObject(base64_encode('key-test2')); // 执行获取视频元信息操作。 // $input->setProcess('video/info'); $output = $client->getObject($input); echo $output->getRequestId() . PHP_EOL; // 获取图片处理后的数据。 echo $output->getContent()->getContents() . PHP_EOL; $output->getContent()->close(); } catch (TosClientException $ex) { echo $ex->getMessage() . PHP_EOL; } catch (TosServerException $ex) { echo $ex->getRequestId() . PHP_EOL; echo $ex->getStatusCode() . PHP_EOL; echo $ex->getErrorCode() . PHP_EOL; } finally { if($output){ $output->getContent()->close(); } }
关于视频截帧的详细介绍,请参见视频截帧。