在nginx下部署带MP4视频的django项目遇到的坑

在部署需要播放视频的django项目到nginx上遇到的问题

可以先参考https://blog.51cto.com/2687949/2108206添加nginx第三方支持MP4的模块

或者直接使用nginx自带的MP4模块http://nginx.org/en/docs/http/ngx_http_mp4_module.html

要支持在页面中播放MP4,必须要添加MP4的模块

先看一下nginx.conf中server的代码

location ~* .*\.(mp4|flv)$ {
                    root  /home/web_project/Shop;
                    mp4;
                    mp4_buffer_size 1m ;
                    mp4_max_buffer_size 10m ;
             	    limit_rate 200k ;#限速200k
	                limit_rate_after 10m ;#加载10m后开始限速
                    autoindex on;  #开启文件目录浏览功能
                    autoindex_exact_size on;  #显示文件大小从KB显示
                    autoindex_localtime on;  #显示文件修改时间,为服务器本地时间
                }

配置了之后在浏览器中输入http://127.0.0.1/show.mp4

就可以打开/home/web_project/Shop下的show.mp4视频了

但是:

使用ftp上传的视频是可以上传的,但是使用django admin的后台添加视频时,输入视频的url会显示404.

对比能看的视频和404的视频后发现,404的视频的权限是600,能看的视频的权限是644

所以就把404的视频的权限修改成 644后,原本404的视频也能看了

遂在admin.py 的VideoAdmin中加了一行能修改权限的代码

class VideoAdmin(TranslationAdmin):
    list_display = ['title', 'video', ]
    search_fields = ['title', ]
    list_filter = ['title', ]

    def save_model(self, request, obj, form, change):
        obj.save()
        video_url = os.path.join(settings.MEDIA_ROOT, str(obj.video))
        os.system("chmod 644 %s" % video_url) # 加的是这行
        obj.image = 'video_image/%s' % auth.get_video_pic(video_url)
        obj.save()
        super().save_model(request, obj, form, change)

 所以如果发现添加模块了,配置也正常,但是视频不能播放,别忘了查看一下权限是不是够

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值