基于s3cmd的视频存储方案有哪些

本篇内容介绍了“基于s3cmd的视频存储方案有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、小程序设计、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了泰州免费建站欢迎大家使用!

改造目标

1. 需要支持rtmp播放,尽量少的改动现有构架

2. 使用S3替代现有的本地存储方式,尽可能降低对本地存储的依赖。

3. 视频需要支持防盗链、防下载。

方案1(后端点播模式)

方案概述:将视频文件(只支持mp4、flv)上传到S3,并设置其访问权限为public,使用rtmp模块的play指令进行播放。

操作流程

1.上传视频到S3

将mp4或者flv文件上传到S3的movie这个bucket,比如上传的文件名称为"video.mp4",并设置访问权限为"public-read",注意设置对应的content-type,以s3cmd为例

s3cmd put video.mp4 s3://movie --acl-public
2.配置nginx的rtmp模块

配置nginx的rtmp模块,在nginx.conf中新增如下内容

rtmp {
    server {
    listen 1935;
    application vod_http {
    play http://s3.ceph.wor/movie;
    }
}
3.测试访问

方案2(后端推流模式)

方案概述:将视频文件(只支持mp4、flv)上传到S3,并设置其访问权限为public,后端需要借助ffmpeg将S3的HTTP数据流推送到nginx,再经由rtmp模块转换成HLS。

操作流程

1.上传视频到S3

将mp4或者flv文件上传到S3的movie这个bucket,比如上传的文件名称为"video.mp4",并设置访问权限为"public-read",注意设置对应的content-type,以s3cmd为例

s3cmd put video.mp4 s3://movie --acl-public
2.配置nginx的rtmp模块

/etc/nginx/nginx.conf #nginx配置文件,注意替换{nginx_server}为nginx服务器IP或者域名

rtmp {
    server {
        listen 1935;

    application myapp {
                live on;
                hls on;
                hls_path /var/tmp/myapp; #hls文件临时存放目录
                hls_keys on;
                hls_key_path /var/tmp/keys; #hls的加密key存放目录
                hls_key_url http://{nginx_server}/keys/; #key的对外访问路径
                hls_fragments_per_key 10; #每10帧更新一次key
            }
    }

/etc/nginx/conf.d/hls.conf #站点配置文件

server {
    listen      80;
    location /keys {
        root /var/tmp;
    }
    location /myapp {
        # Serve HLS fragments
        types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }
        root /var/tmp;
        add_header Cache-Control no-cache;
    }
}

方案对比

功能方案1方案2
前端rtmp播放支持支持
前端hls播放不支持支持
S3替代本地存储支持支持
防盗链下载支持(客户端接收的是rtmp)支持(加密HLS分片,动态key方式)

“基于s3cmd的视频存储方案有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


文章名称:基于s3cmd的视频存储方案有哪些
网页网址:http://ybzwz.com/article/ihhsih.html