php项目中视频文件的上传和存储问题?

请教个问题:

有这么个项目需求, 想让学生在线学习学英语课程, 然后对学生进行笔试和口语测试.

  1. 笔试好说,
  2. 口语测试, 想让学生自己录制视频, 然后在项目网站中上传, 管理员可以在线观看和管理. 这个怎么实现呢?

    • 之前laravel项目, 视频文件好像是直接存储在项目文件所在的服务器.
    • 假设视频文件很多, 体积也较大, 应该怎么处理? 另外再买个对象存储服务器专门用来存储服务器文件?
    • 如果使用单独的服务器存储, 该怎么部署呢? 比如说用户点击上传按钮后, 文件被上传到这个服务器, 需要怎么设置呢?
阅读 4.4k
4 个回答

1)如果不涉及到重要资源和频繁的维护,可以直接通过流的形式上传并存储到本地服务器中,因为硬盘是很便宜的。
2)如果需要在本地存储资源,以thinkphp5.1为例

public function upload(){
    // 获取表单上传文件 例如上传了001.mp4
    $file = request()->file('video');
    // 移动到框架应用根目录/uploads/ 目录下
    $info = $file->move( '../uploads');
    if($info){
        // 成功上传后 获取上传信息
        // 输出 mp4
        echo $info->getExtension();
        // 输出 004.mp4
        echo $info->getFilename(); 
    }else{
        // 上传失败获取错误信息
        echo $file->getError();
    }
}

如果文件较大,还得根据需要设置:
1)代理服务器的缓存大小
2)请求的body大小
3)服务器超时时间

最后,还可能会涉及到分片上传,断点续传等等。

如果数据比较重要或需要对文件进行方便的管理,和频繁的维护。
建议使用OSS,原因:
1)提供了稳定和健全的api
2)提供了图片和视频等文件压缩和处理的服务,不需要自己写代码处理
3)提供备份等服务。
4)根据不同的IO频率、文件大小和带宽使用需求,都提供了不同的解决方案。

不用太着急上OSS
可以预估视频所需的大小 前期没几个学生的话 上云没意义

管理员可以在线观看和管理

这个涉及到视频转码的问题了
FFMPEG 是专门处理这方面的问题的

不建议过早优化

支持2楼 建议上云,开发成本低,维护成本低,不占用服务器带宽和资源

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