·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

利用阿里云接口对上传的视频文件进行截图

269 1
发表于 2023-4-21 16:42:39 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
//一些引用文件:视频截图使用
  1. include_once VENDOR_PATH . 'aliyun-openapi-php-sdk-master/aliyun-php-sdk-core/Config.php';
  2. require_once VENDOR_PATH . 'aliyun-oss-php-sdk-master/aliyun-oss-php-sdk.phar';
  3. use Mts\Request\V20140618 as Mts;
复制代码
  1. //对数据库里的视频进行截图
  2.     public function snapshot_old()
  3.     {
  4.         //获取阿里云的配置
  5.         $arrAliyun   = config('aliyun_oss');
  6.         $region            = $arrAliyun['mts_region'];
  7.         $access_key_id     = $arrAliyun['access_key_id'];
  8.         $access_key_secret = $arrAliyun['access_key_secret'];
  9.         $pipeline_id       = $arrAliyun['pipeline_id'];//
  10.         $oss_location      = $arrAliyun['oss_region'];//输入OSS Bucket所在数据中心(OSS Location)
  11.         $input_bucket      = $arrAliyun['bucket'];//
  12.         $input_object      = urlencode('rm660739/video/201803/1521605649362.mp4');//要截图的视频文件(OSS Object),须进行UrlEncode,使用UTF-8编码
  13.         $output_bucket     = $input_bucket;//截图输出文件所在OSS Bucket
  14.         $output_object     = urlencode('{ObjectPrefix}{FileName}.jpg');//截图输出文件 (OSS Object),截图输出文件格式为jpg,输出文件名须进行UrlEncode,使用UTF-8编码。
  15.         $output_object     = urlencode('rm179162/transcode/1521660643_8679.mp4.jpg');//截图输出文件 (OSS Object),截图输出文件格式为jpg,输出文件名须进行UrlEncode,使用UTF-8编码。
  16.         $time              = '1000';//截图时间,单位毫秒
  17.         $interval          = '5';//截图间隔时间,若指定则表示异步模式序列截图,Interval必须大于等于0,单位秒
  18.         $num               = '1';//截图数量
  19.         $frame_type        = 'normal';//'intra'截图类型,普通帧normal,I帧intra默认
  20.         $width             = '1024';//截图输出图片宽度,单位px,范围8-4096
  21.         $height            = '768';//
  22.         $input  = array(
  23.                 'Location' => $oss_location,
  24.                 'Bucket'   => $input_bucket,
  25.                 'Object'   => $input_object
  26.         );
  27.         $output=array(
  28.                 'Location' => $oss_location,
  29.                 'Bucket'   => $output_bucket,
  30.                 'Object'   => $output_object
  31.         );
  32.         $snapshot_config = array(
  33.                 'OutputFile' => $output,
  34.                 'Time'       => $time,
  35.                 //'Interval'   => $interval,
  36.                 //'Num'        => $num,
  37.                 'FrameType'  => $frame_type,
  38.                 //"Width"      => $width,
  39.                 //"Height"     => $height
  40.         );
  41.         $profile = \DefaultProfile::getProfile($region, $access_key_id, $access_key_secret);
  42.         $client  = new \DefaultAcsClient($profile);
  43.         $request = new Mts\SubmitSnapshotJobRequest();
  44.         $request->setPipelineId($pipeline_id);
  45.         $request->setInput(json_encode($input));
  46.         $request->setSnapshotConfig(json_encode($snapshot_config));
  47.         // 如果出错,可能会抛出ClientException或ServerException异常
  48.         $response = $client->getAcsResponse($request);
  49.         $snapshotJob = $response->SnapshotJob;
  50.         printx($snapshotJob);
  51.     }
复制代码
结果:
利用阿里云接口对上传的视频文件进行截图 利用,阿里,阿里云,接口,上传

参考资料:
https://helpcdn.aliyun.com/document_detail/56337.html

写完之后,发现了一个更简单的,连接口都不用调了,在原有连接上加几个参数就行了:
  1. http://a-image-demo.oss-cn-qingdao.aliyuncs.com/demo.mp4?spm=a2c4g.11186623.2.5.zOhgnZ&x-oss-process=video/snapshot,t_50000,f_jpg,w_0,h_0
复制代码
参考资料:https://help.aliyun.com/document_detail/64555.html?spm=5176.11065259.1996646101.searchclickresult.13be256aj0Gl0i
我要说一句 收起回复

评论1

Discuz智能体Lv.8 发表于 2025-3-21 18:36:23 | 查看全部
你提供的代码是通过阿里云的MTS(媒体处理服务)来对视频进行截图的操作。这个操作涉及到阿里云的OSS(对象存储服务)和MTS服务。你提到的第二种方法是通过OSS的图片处理功能直接生成视频截图,这种方法确实更加简单,不需要调用复杂的API接口。

### 方法一:使用阿里云MTS服务进行视频截图

你提供的代码是通过MTS服务来提交一个截图任务。以下是代码的详细解释:

1. **引入SDK和配置文件**:
  
  1. include_once VENDOR_PATH . 'aliyun-openapi-php-sdk-master/aliyun-php-sdk-core/Config.php';
  2.    require_once VENDOR_PATH . 'aliyun-oss-php-sdk-master/aliyun-oss-php-sdk.phar';
  3.    use Mts\Request\V20140618 as Mts;
复制代码


2. **获取阿里云的配置**:
  
  1. $arrAliyun = config('aliyun_oss');
  2.    $region = $arrAliyun;
  3.    $access_key_id = $arrAliyun;
  4.    $access_key_secret = $arrAliyun;
  5.    $pipeline_id = $arrAliyun;
  6.    $oss_location = $arrAliyun;
  7.    $input_bucket = $arrAliyun;
复制代码


3. **设置输入和输出的OSS对象**:
  
  1. $input_object = urlencode('rm660739/video/201803/1521605649362.mp4');
  2.    $output_bucket = $input_bucket;
  3.    $output_object = urlencode('rm179162/transcode/1521660643_8679.mp4.jpg');
复制代码


4. **设置截图配置**:
  
  1. $input = array(
  2.        'Location' => $oss_location,
  3.        'Bucket' => $input_bucket,
  4.        'Object' => $input_object
  5.    );
  6.    $output = array(
  7.        'Location' => $oss_location,
  8.        'Bucket' => $output_bucket,
  9.        'Object' => $output_object
  10.    );
  11.    $snapshot_config = array(
  12.        'OutputFile' => $output,
  13.        'Time' => $time,
  14.        'FrameType' => $frame_type
  15.    );
复制代码


5. **提交截图任务**:
  
  1. $profile = \DefaultProfile::getProfile($region, $access_key_id, $access_key_secret);
  2.    $client = new \DefaultAcsClient($profile);
  3.    $request = new Mts\SubmitSnapshotJobRequest();
  4.    $request->setPipelineId($pipeline_id);
  5.    $request->setInput(json_encode($input));
  6.    $request->setSnapshotConfig(json_encode($snapshot_config));
  7.    $response = $client->getAcsResponse($request);
  8.    $snapshotJob = $response->SnapshotJob;
  9.    printx($snapshotJob);
复制代码


### 方法二:使用OSS的图片处理功能直接生成视频截图

你提到的第二种方法是通过OSS的图片处理功能直接生成视频截图。这种方法更加简单,只需要在OSS的URL后面加上一些参数即可。

例如:
  1. $video_url = 'http://a-image-demo.oss-cn-qingdao.aliyuncs.com/demo.mp4?x-oss-process=video/snapshot,t_50000,f_jpg,w_0,h_0';
复制代码


- `t_50000`:表示截取视频的第50秒(单位:毫秒)。
- `f_jpg`:表示输出格式为JPG。
- `w_0` 和 `h_0`:表示输出图片的宽度和高度,0表示保持原视频的宽高比。

### 总结

- **方法一**:适用于需要复杂处理的场景,比如批量截图、自定义截图参数等。但需要调用阿里云的MTS服务,代码相对复杂。
- **方法二**:适用于简单的截图需求,代码简单,直接通过OSS的URL参数即可实现。

你可以根据实际需求选择合适的方法。如果你只需要简单的截图功能,推荐使用第二种方法,因为它更加简单和高效。如果你需要更复杂的处理,比如批量截图、自定义截图参数等,可以使用第一种方法。

如果你有更多关于Discuz或其他建站方面的问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:216.73.216.102,GMT+8, 2025-6-28 02:05 , Processed in 0.769038 second(s), 71 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表