图片视频上传压缩的考察

2024-02-08 06:44

本文主要是介绍图片视频上传压缩的考察,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文仅做上传 / 纯客户端压缩功能的调研

上传

  1. 能否在上传时就限制图片的张数?移动端不能使图库变成禁止状态,用户点击完成之后才能进行校验。

  2. 能否限制上传的文件格式?可以限制,PC端能够完美限制,移动端只能部分限制,限制上传图片,IOS会将txt等文件禁用,但是安卓机不会,仍然能上传txt,手机上传中会无accept='image/jpeg,image/jpg,image/png属性。
    选择之后必须再进行校验提示。
    可考虑做移动 / PC端不同配置。

  3. 实现方式
    采用<input type='file' multiple='multiple' />实现,不限制格式。
    参考https://tinypng.com/。

安卓机上表现:可以选择相册、照片、文件,但是外层一次只能选择一张,进入图库内层可以选择多张。
IOS上表现:可以正常选择多张。

采用<input type='file' accept='image/*,video/*' multiple onChange={onChange} />实现。
调用样式IOS正常,安卓先要选择文件,才能调用相册。
4. 上传过程可使用axios的onUploadProgress获取上传进度。

视频压缩

压缩工具

  • fluent-ffmpeg:一个用于处理和压缩视频的npm包,支持多种视频格式,如MP4、MOV、AVI等。
  • ffmpeg.wasm
    不考虑wasm,纯前端方式无法压缩视频,需要传到服务端再压缩。

压缩参数

  • 帧率:指的的视频每秒钟播放的图片数目,帧率越小,那么你看到的视频就会越卡,动作就不连贯。一般25fps是常用的视频尺寸。
  • 码率(比特率):就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒,通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,当然不是越大越好。这样只会增加数据量,浪费内存。
  • 分辨率:就是视频的尺寸大小,如标准的720P视频就是每一横排有1280个像素,每一列有720个像素,总的像素就是1280x720个,这个乘积即是视频的分辨率。一般情况下,分辨率越大,视频就越清晰。清晰度由码率决定,视频尺寸和像素量由分辨率决定。码率越高越清晰(前提是分辨率保持不变),分辨率越大视频尺寸越大。

mp4视频文件压缩率大概是多大:https://blog.csdn.net/xiaozaq/article/details/109378302

  1. 以码率5M为准,1s 24帧
  • 20s:
    视频大小:20s*5Mb = 100Mb , 100 / 8 = 12.5 MB ,大概12.5M。
  • 30s:
    视频大小:大概18.75 MB。
  1. 以码率3M为准
  • 20s:20*3/8=7.5M。
  • 30s:30*3/8=11.25M。

参考网站

  1. 亚马逊
  • 上传限制100M ,10分钟内。
  • 格式avi / flv / mov / mpg / wmv
  1. OPPO
    下载视频5.2MB,16s,720p
    码率:5.2MB / 15s ≈ 346,667 bps ≈ 0.35MB。
  2. SONY
    上传至第三方视频网站Youtube,不考虑压缩问题。
  3. 其他
    上传到服务器压缩,比如阿里云,或者后端找工具实现。
    假设限制视频的大小是100MB,20s,视频码率大概是40M
    如果30秒,则视频码率大概是 100 MB * 8 / 30 s = 26.7 M

图片压缩画质 & 最大上传限制 & 压缩工具

存储方案

  1. 原图压缩,只存储一张压缩的原图,小图的展示压缩通过阿里云提供自动裁剪方式实现。
    阿里云的压缩文档:https://help.aliyun.com/document_detail/44688.html?spm=5176.8465980.quota-list.1.6aff1450PcUeZX
    注意点:
  2. 可支持压缩png , jpg格式(由压缩工具决定),压缩完毕后图片格式仍然保留。
  3. 最终采用:图片存储一张压缩后的原图、一张canvas裁剪后的正方形预览图,数据库保存两个版本的url数据,届时可直接获取。

压缩工具

  1. canvas压缩,canvas提供toBlob的压缩canvas.toDataURL(‘image/jpeg’, quality) 压缩算法由浏览器内部实现,不同浏览器实现不同。(除了算法压缩、尺寸压缩也是一个压缩标准)
  2. 其他涉及第三方压缩服务器、仅供服务器使用的依赖暂不考虑。
  • imagemin
  • sharp
  1. wasm的压缩工具- 暂不考虑。
canvas压缩效果

以谷歌 PC为例测试canvas压缩效果:(长宽不变)

  • JPG1:508.11k
    1:567k
    0.9:131K
    0.8:87.8K

  • JPG2:700K
    1: 768K
    0.9: 174k
    0.8: 117K
    0.6: 77.9k

  • webp:webp可以压缩,效果类比jpg

  • PNG 224k 只能通过调整尺寸压缩
    1: 231k
    0.9: 231k
    0.8: 231K

?????看完png我就是一个皱眉,啊?canvas压缩png原来这么拉?那看来canvas压缩不能用了。

参考网站

  1. goPro
  • 压缩图仅13K,上传时做了自动裁剪,取中间的正方形。
  • 下载原图600K,不能识别压缩比例。
    OPPO
  • 阿里云自动裁剪方案,不确定是否压缩。

错误处理

  1. 超时错误。
  2. 上传失败错误。(服务器错误)
  3. 格式尺寸错误(客户端错误)

这篇关于图片视频上传压缩的考察的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/690200

相关文章

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.