阿里ECS向OSS传递mp4,速度爆慢,求解!

由于视频较大,应显示上传进度,所以分两步:
1 用户在浏览器里选中文件上传至ECS的临时目录,cron定期清理该目录;
2 用户填写视频介绍、提交表单至ECS,ECS验证无误后存入数据库,并将临时视频转发OSS。

我传了一个 27MB 的 mp4,第一步耗时约 25 秒,第二步耗时约 20 秒,就是说在提交表单时会卡住 20 秒!

请问为啥会这么慢,从ECS到OSS走得难道不是阿里的内网?应该很快吧?(ECS和OSS都在华东1)

谢谢!

===========================================================================

我现在突然想到还有一个问题:对于上传的视频,我们后台(PHP)必须抽取视频流的第一帧作为海报(poster)供前端展示视频列表使用,如果直接传OSS的话,我们后台就没法拿到视频抽取图像了!

这张图片是十分重要的,因为在视频列表页里显示的就是这张图片,因此必须要有。目前我们PHP已经能抽取首帧图像了,前端那边好像没有太好办法,所以我们是在ECS上收到视频时生成图像的。

请问这要怎么办?谢谢!

阅读 6.2k
4 个回答

OSS可以走授权直传的形式,ECS只需要负责发Token就行,客户端拿到Token以后可以直接传到OSS,并不需要走ECS中转,具体的参考OSS文档里的最佳实践吧。


第二个问题:OSS视频截帧

第一个,我觉得文件上传要经历的步骤有两个.

1. 通过C端(浏览器)上传到你的服务器.
2. 通过服务器的PHP代码读取流并上传到OSS服务器.

你的耗时可以得到一个点,25 + 20 为45秒,并不是所谓的20秒.那如何优化这种,我是否可以直接通过前端直接上传到oss,这样就跳过第一步,至少减少20秒.而且这个时间就跟浏览器端的网速有关了.后台就直接入库就行了.
至于文件是否浪费了,那就直接来一个定时清理就可以了.

别这么干,这样要消耗不少你的ECS流量,你应该考虑OSS STS授权方式,由客户端直接上传到oss上: https://help.aliyun.com/docum...

简单来说一下,这种方式相当于客户端从你的服务器拿到STS临时授权,这样客户端就可以不通过你的ECS服务器做中转,直接上传文件到OSS上。

乍一看可能觉得很麻烦,但是如果你上传大型视频这种需求比较旺盛的情况下,这种方式对用户的体验最好,速度快,又不占用你的ECS的带宽

先谢谢楼上几位朋友!

我现在突然想到还有一个问题:对于上传的视频,我们后台(PHP)必须抽取视频流的第一帧作为海报(poster)供前端展示视频列表使用,如果直接传OSS的话,我们后台就没法拿到视频抽取图像了!

这张图片是十分重要的,因为在视频列表页里显示的就是这张图片,因此必须要有。目前我们PHP已经能抽取首帧图像了,前端那边好像没有太好办法,所以我们是在ECS上收到视频时生成图像的。

请问这要怎么办?谢谢!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题