【视频播放】因视频过大产生卡顿

4 篇文章 0 订阅
2 篇文章 0 订阅

本文章旨在记录解决网页播放较大视频文件这一问题中积累到的知识点。

一、前后端技术都不变的基础上,如何提升视频播放速度

后端上传视频文件走的直接是普通文件上传,提供的文件接口也是media。
前端仅使用了<video src="">,src中的链接即后端提供的url。

这时候会发生,播放视频很卡的现象,当视频大于100M会出现基本每秒的播放都要卡顿。

使用nginx的静态文件代理,url含media直接让它到nginx的指定路径下找文件,nginx的该文件夹和django的media文件夹是共享的。这么处理速度上来很多,但还是有点卡(跟老网站的直接读静态文件相比)
docker-compose.yml

version: "3"

services:
  db:
    image: postgres
    expose:
      - "5432"
    environment:
      POSTGRES_PASSWORD: '***'
      POSTGRES_USER: 'postgres'
      POSTGRES_DB: '***'
      PGDATA: '/var/lib/postgresql/data/pgdata'
    volumes:
        - ./postgres/data:/var/lib/postgresql/data/pgdata
    restart: always

  web:
    build: ./web
    expose:
      - "8000"
    volumes:
      - ./web/media:/home/**/media
      - ./web/cntechsite:/home/**/cntechsite
      - ./uwsgi:/tmp # 挂载uwsgi日志
    depends_on:
      - db
    # environment:
    #   - DEBUG=False
    tty: true #同docker run指令参数,表示分配tty设备,该可以支持终端登录
    stdin_open: true

  nginx:
    build: ./nginx
    restart: always
    ports:
      - "**:80"
    expose:
      - "80"
    volumes:
      - ./web/media:/usr/share/nginx/html/media
    depends_on:
      - web
    links:
      - 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
网页视频加载慢
求助:关于视频播放的方案

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 一、小组概况 2 1.1 小组介绍 2 1.2小组获奖情况 3 1.3名词解释 3 二、选题理由 4 三、设定目标 8 四、目标可行性分析 8 4.1内部分析 8 4.2外部对比 9 4.3成员能力和经验 10 4.4症结分析 10 4.5症结原因统计 15 4.5可行性计算分析 15 五、原因分析 16 六、确定主要原因 17 6.1要因确认过程 17 6.2要因总结 24 七、制定对策 24 7.1对策分析 24 7.2对策实施计划 25 八、对策实施 26 8.1对策实施一:硬件资源提升 26 8.2对策实施二:负荷均衡类参数调整 30 8.3对策实施三:接入态和业务态的算法优化 37 8.4对策实施四:通过系统调度策略修改提升DNS加速效率 42 九、效果检查 45 十、巩固措施 49 十一、总结和打算 50 1.3名词解释 视频卡顿: 用户浏览视频网站播放视频等多媒体文件时,当视频数据下载量小于播放需求数据量,则判断视频卡顿。 腾讯视频卡顿率: 腾讯视频卡顿率是指腾讯视频业务在统计周期内当日卡顿次数与播放次数的比值。 二、选题理由 外部因素 手机网络视频成为网络视频的主流: 根据中国互联网络信息中心(CNNIC)发布的第42次《中国互联网络发展状况统计报告》,截至2018年6月30日,我国网络视频用户规模达6.09亿,占网民总体的76.0%;其中手机网络视频用户规模达5.78亿,占手机网民的73.4%。 图2.1 网络视频/手机网络视频用户规模及使用率(制图人:杨春霞) 腾讯视频受用户喜爱: 腾讯视频通过差异化的自制原创内容拉动用户观看、付费,网络独播剧与网络综艺表现抢眼。根据腾讯从2017年第三季度到2018年第二季度的财报显
eay-player视频卡顿可能是由多种原因引起的。一种可能是网络连接不稳定或带宽不足。另一种可能是设备性能不足或处理器负载过高。此外,视频本身的编码质量和分辨率也会对播放流畅度产生影响。要解决视频卡顿问题,可以尝试以下几种方法: 1. 确保网络连接稳定:检查网络连接是否正常,尽量使用有线连接或靠近无线路由器以获得更稳定的信号。可以尝试重启路由器或更改网络设置来改善连接质量。 2. 增加带宽:如果使用的是共享网络,可能会因为其他用户同时使用网络而造成带宽不足。可以尝试关闭其他设备的下载或流媒体服务,以释放带宽。 3. 降低视频质量:如果网络条件不理想,可以尝试降低视频的分辨率或选择更低的画质,以减少网络传输的数据量。 4. 检查设备性能:如果设备的处理器性能较低或内存不足,可能会导致视频卡顿。可以关闭其他运行的应用程序,以释放设备资源。 5. 更新播放器和驱动程序:确保使用的播放器和相关驱动程序是最新版本,以获得更好的性能和稳定性。 6. 检查视频编码:某些视频编码格式可能对设备的解码能力要求较高。可以尝试重新编码视频文件,使用更适合设备的编码格式。 7. 清除缓存和临时文件:过多的缓存和临时文件可能会占用设备存储空间并影响播放性能。可以定期清理缓存和临时文件,以提升播放效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值