【视频播放】因视频过大产生卡顿
本文章旨在记录解决网页播放较大视频文件
这一问题中积累到的知识点。
一、前后端技术都不变的基础上,如何提升视频播放速度
后端上传视频文件走的直接是普通文件上传,提供的文件接口也是media。
前端仅使用了<video src="">
,src中的链接即后端提供的url。
这时候会发生,播放视频很卡的现象,当视频大于100M会出现基本每秒的播放都要卡顿。
使用nginx的静态文件代理,url含media直接让它到nginx的指定路径下找文件,nginx的该文件夹和django的media文件夹是共享的。这么处理速度上来很多,但还是有点卡(跟老网站的直接读静态文件相比)
docker-compose.yml
version: "3"services:db:image: postgresexpose:- "5432"environment:POSTGRES_PASSWORD: '***'POSTGRES_USER: 'postgres'POSTGRES_DB: '***'PGDATA: '/var/lib/postgresql/data/pgdata'volumes:- ./postgres/data:/var/lib/postgresql/data/pgdatarestart: alwaysweb:build: ./webexpose:- "8000"volumes:- ./web/media:/home/**/media- ./web/cntechsite:/home/**/cntechsite- ./uwsgi:/tmp # 挂载uwsgi日志depends_on:- db# environment:# - DEBUG=Falsetty: true #同docker run指令参数,表示分配tty设备,该可以支持终端登录stdin_open: truenginx:build: ./nginxrestart: alwaysports:- "**:80"expose:- "80"volumes:- ./web/media:/usr/share/nginx/html/mediadepends_on:- weblinks:- web
nginx/Dockerfile
FROM nginx:latest# 删除原有配置文件,创建静态资源文件夹和ssl证书保存文件夹
RUN rm /etc/nginx/conf.d/default.conf \&& mkdir -p /usr/share/nginx/html/media
# && mkdir -p /usr/share/nginx/html/static \
# && mkdir -p /usr/share/nginx/ssl# 设置Media文件夹用户和用户组为Linux默认www-data, 并给予可读和可执行权限,
# 否则用户上传的图片无法正确显示。
RUN chown -R www-data:www-data /usr/share/nginx/html/media \&& chmod -R 775 /usr/share/nginx/html/media# 添加配置文件
ADD ./nginx.conf /etc/nginx/conf.d/# 添加ssl证书
ADD ./**.crt /etc/nginx/certs/
ADD ./**.key /etc/nginx/certs/# 关闭守护模式
CMD ["nginx", "-g", "daemon off;"]
nginx/nginx.conf
upstream django {ip_hash;server web:8000; # Docker-compose web服务端口
}server {listen 80 ssl; # 监听80端口server_name localhost; # 可以是nginx容器所在ip地址或127.0.0.1,不能写宿主机外网ip地址charset utf-8;client_max_body_size 10240M; # 限制用户上传文件大小# client_body_buffer_size 100M;ssl_certificate /etc/nginx/certs/ssl-33-cntechcom2020.crt;ssl_certificate_key /etc/nginx/certs/ssl-33-cntechcom2020.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers HIGH:!aNULL:!MD5;#location /static {location / {include /etc/nginx/uwsgi_params;uwsgi_pass django;uwsgi_read_timeout 1200;uwsgi_connect_timeout 600;uwsgi_send_timeout 1200;uwsgi_max_temp_file_size 10240M;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_redirect off;proxy_set_header X-Real-IP $remote_addr;# proxy_pass http://django; # 使用uwsgi通信,而不是http,所以不使用proxy_pass。}location /media {alias /usr/share/nginx/html/media;}}access_log /var/log/nginx/access.log main;error_log /var/log/nginx/error.log warn;server_tokens off;
做了一下比较,老网站使用了阿里云的负载均衡。我寻思就一个服务器,用负载均衡有用吗,还是加了一下,结果真的有用。至于这个原理我就不懂。
二、对上传视频进行压缩
一中的方法感觉对小体积视频比较有效,但体积一旦变大可能就会有些危险,因为没有从本质解决问题。对上传视频进行压缩也算是一种无奈之举。
三、采用主流视频网站的解决方案
这里就涉及到大改代码了。搜了一下解决方案,直接贴链接了,因为还没打算改。
视频在线播放卡慢,如何实现视频分片加载呢?前段 vue,后台 go
网页视频加载慢
求助:关于视频播放的方案
【视频播放】因视频过大产生卡顿相关推荐
- 黑苹果音频卡顿_手机耗电大、卡顿怎么办?只需关掉这个按键轻松解决,去试试...
阅读本文前,请您先点击上面的"议科技",关注,这样您就可以继续收到最新文章了.每天都有分享.完全是免费订阅,请放心关注. 大家好,很高兴认识大家,话不多说,进入正题,手机现在已经是 ...
- 解决DeepLinux 15.8在I3 6100的核心显卡hd530播放视频隔1分钟卡顿几秒的问题
我的机器配置如下:lspci 00:00.0 Host bridge: Intel Corporation Skylake Host Bridge/DRAM Registers (rev 07) 00 ...
- kodi android 卡顿,给Kodi设置缓存来解决播放大文件卡顿
给Kodi设置缓存来解决播放大文件卡顿 2021-03-02 16:21:20 28点赞 355收藏 31评论 Kodi可以算是电视盒子上最棒的播放器了,它具有强大的功能,优美的界面,相信很多人也都是 ...
- 关于Unity VideoPlayer组件 视频切换第一帧卡顿
关于Unity VideoPlay组件 视频切换第一帧卡顿的问题 1.问题: 在做项目时,发现VideoPlayer组件在多个视频切换时,会在第一帧重复上个视频的结束时的画面. 2.原因: 因为Vid ...
- H265网页视频播放器播放H265编码录像视频文件如何减缓卡顿情况?
视频播放延时卡顿的问题从视频服务诞生以来就一直存在,即便是在技术发达的今天,延时卡顿问题仍然是不能完全解决的(不同视频流延时说明). TSINGSEE青犀视频研发团队开发的H265播放器播放录像文件时 ...
- iOS微信聊天界面朋友圈多个小视频同时播放不卡顿
我的简书地址http://www.jianshu.com/p/10206ed63e0d 之前有个需求是实现如微信朋友圈动态列表小视频播放的效果,最近有空整理下给同样有需要的同学. 我们都知道微信朋友圈 ...
- 视频损坏修复后卡顿声音画面口型不同步处理解决方法
视频修复后为什么会 出现卡顿.花屏.音画不同步? 视频损坏后经简单修复后经常遇到画面卡顿,甚至会有花屏,声音和视频画面(说话口型)不同步的情况,声音或者画面提早或者滞后出现,视觉效果上会有明显差别,是 ...
- 结合实战,浅析GB/T28181(八)——视频丢包(卡顿、花屏、绿屏)排查
1 问题现象 在视频专网(局域网)中,通过GB/T 28181视频平台接入大量的网络摄像机,比如上百.上千,甚至上万台.当系统同一时刻实况点播并发的视频路数较多时,常常会在客户端或电视墙监视器上,出现 ...
- 高德地图marker标点数据量太大造成卡顿的解决方案
marker标点卡顿问题 问题说明 应用高德地图使用marker标点时,由于数据量大(>1000)就会造成页面卡顿,好几秒才能加载完成,并且页面也会卡顿 解决方案 使用官方提供的海量点MassM ...
最新文章
- 动态路由选择协议(三)链路状态路由选择协议
- 俞敏洪:创业者应该避开的10个坑
- [content-description] find_element_by_accessibility_id 在 android 中的详解
- java 数据库数据脱敏_Sharding-JDBC-数据脱敏
- Java异常(一) Java异常简介及其架构
- C语言库自带的二分查找函数bsearch函数的使用示例
- List集合_介绍常用方法
- 22(2)序列化以及反序列化
- 这是一段关乎你的代码:你的未来 我们正在参与
- Java 反射(Array相关)
- python123用户登录的三次机会_用户登录三次机会(PYTHON)
- ftp 200 227 451linux,FTP无法链接
- 从高斯消元到矩阵的三角分解(LU)
- cookie不同页面访问不到的问题
- 卡西欧手表城市编码,调时区用
- 查看 Chrome 下载的文件的真实下载地址
- 我来告诉你,草根程序员如何进入BAT
- CodeForces - 1467C(枚举,思维)
- 用opencv将左右眼视角图片转换为红蓝3D图片
- 简单的用java操作Excel入门
热门文章
- “小波”的定义与小波函数
- python字典查询_python查询字典
- 数据分析---2.数据分析----分析NBA中国官方网站2017-2018赛季的球员数据
- java numbereditor_java.lang.NumberFormatException: For input string: ${jdbc.maxActive}
- request设置cookies
- bacula 备份小技巧
- 一个卡牌游戏的DEMO(0)
- 大数据显示:中国XP用户心向Win 10
- 超高性价比WiFi蓝牙模块大合集
- css3 transform animation 动画 小结