使用Zencoder/S3生成视频缩略图时的时间节点异常问题
解决指定时间点生成视频缩略图却得到开头帧的问题
嘿,我碰到过类似的坑!从你贴的代码来看,应该是用视频转码类API(比如Google Cloud Transcoder)生成缩略图对吧?指定了times: [20]却还是拿到开头的帧,核心问题大概率是没明确指定缩略图的生成模式。
很多这类API默认会用「时间间隔生成」的模式,这时候你设置的times参数会直接被忽略,自然就生成视频开头的缩略图了。你只需要在thumbnails的配置里加一行'type' => "TIME",告诉API你要基于指定的时间点生成缩略图。
修改后的代码如下:
$body = [ 'input' => $inputUrl, 'outputs' => [ [ 'thumbnails' => [ [ "label" => "first", 'base_url' => $outputUrl, 'number' => 1, 'type' => "TIME", // 关键:指定按时间点生成缩略图 'times' => [20], ], ], 'notifications' => [ 'url' => "{$notificationUrl}", 'format' => 'json', ], ], ], ];
如果加了type还是不行,可以再排查这几个点:
- 确认你的视频时长确实超过20秒,如果视频本身不足20秒,部分API会自动取最后一帧,但不会是开头帧,这个可能性比较小;
- 检查
inputUrl是否指向了正确的视频文件,会不会误传了其他短视频或者测试文件; - 少数API的
times参数单位是毫秒,如果上面的方法没用,可以试试把[20]改成[20000]试试。
内容的提问来源于stack exchange,提问作者Ilgner de Oliveira
相关产品推荐
相关产品推荐

