阿里云OSS 视频截帧、媒体管理(提交截图作业)

场景:小程序上传视频到阿里云OSS, 并将视频地址及宽高提交给服务端, 服务端通过 OSS 提供的 视频截帧 生成封面图片地址

问题:Android设备横拍的视频生成的封面图片会被拉伸, 而iOS设备则是竖拍的视频所生成的封面图片会被拉伸
解决方案一

<原视频URL>?x-oss-process=video/snapshot,t_1000,f_jpg,w_0,h_0,m_fast,ar_auto - 添加 ar 参数即可
参考文档:https://help.aliyun.com/document_detail/64555.html?spm=a2c4g.11174283.6.809.718b7da2oK1pj3

解决方案二
  1. 视频截帧时设置宽高为0, 这样图片不会变形, 但是会被旋转90度, 即Android视频封面全是竖的, iOS视频封面全是横的
  2. 使用 阿里云媒体管理 - 提交截图作业, 开通媒体管理后, 需要给 OSS Bucket 所属的用户添加权限 AliyunMTSFullAccess 管理媒体转码服务(MTS)的权限, MTS SDK, 可以通过 阿里云SDK平台 查看使用方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    $accessKey = 'xxxx';
    $accessSecret = 'yyyy';
    $regionId = 'cn-hangzhou';
    $ossBucket = 'test';
    $ossLocation = 'oss-cn-hangzhou';

    AlibabaCloud::accessKeyClient($accessKey, $accessSecret)
    ->regionId($regionId)
    ->asDefaultClient();

    try {
    $option = [
    'query' => [
    'Input' => json_encode([
    'Bucket' => $ossBucket,
    'Location' => $ossLocation,
    'Object' => '1.mp4',
    ]),
    'SnapshotConfig' => json_encode([
    'OutputFile' => [
    'Bucket' => $ossBucket,
    'Location' => $ossLocation,
    'Object' => '1.jpg',
    ],
    'Time' => 1,
    ])
    ]
    ];
    $result = Mts::v20140618()
    ->submitSnapshotJob($option)
    ->request();
    // 若Code已定义,则截图失败
    var_dump($result->has('SnapshotJob.Code'));
    } catch (Exception $e) {
    exit($e->getMessage());
    }
0%