wordpress pending,百度seo是啥,提供东莞微信网站建设,如何做平台推广赚钱随着手机像素的提高#xff0c;拍摄视频也越来越大#xff0c;10秒的视频动辄 二三十兆#xff0c;这给视频传输和播放都带来了 诸多不变。一般都需要 前端或或者后端 对视频进行压缩。由于我这边前端是 H5#xff0c;所以只能后端进行压缩#xff0c; 采用主流压缩库采用… 随着手机像素的提高拍摄视频也越来越大10秒的视频动辄 二三十兆这给视频传输和播放都带来了 诸多不变。一般都需要 前端或或者后端 对视频进行压缩。由于我这边前端是 H5所以只能后端进行压缩 采用主流压缩库采用 ffmpeg 进行我这边是 nodejs 环境 先说下我这边遇到的坑 按照之前压缩图片的思路保持比例先区分是横图还是竖图 竖图 则 图片宽度 图片高度 原图 1080*1920限制高度256则图片宽度 1080*256/1920 144横图 则 图片宽度 图片高度原图1920*1080 限制宽度256则 图片高度 1080*256-1920 144 结果按照上面的思路发现不适用于 视频的分辨率压缩我不管从那个角度拍摄视频视的分辨率均为 1920*1080只是旋转的方向数据有变化而且如果我按照之前处理 图片的思路 则视频压缩出来就会 有概率会 严重变形 ✿:竖屏角度拍摄视频 分辨率 1920*1080朝向 -90 ✿:颠倒角度拍摄视频 分辨率 1920*1080朝向 90 ✿:左转角度拍摄视频 分辨率 1920*1080朝向 undefined ✿:右转角度拍摄视频 分辨率 1920*1080朝向 -180 ffmpeg 压缩视频分辨率的正确姿势 视频编码中一般都会使用常用的几个分辨率手机拍出来的也都是这几个他的分辨率宽 高衡量是横竖的就只有 方向这个属性其他比较骚的方式就不考虑了 720P1080P2K4K分辨率1280*7201920*10802560*14404096*2160画质高清全高清四倍高清超高清宽高比例16:916:916:9≈16:917:9 所以我们在压缩视频时候拿到分辨率就看它的宽度就好了 比如我们的目标分辨率为 1280*720源视频分辨率 1920*1080如果视频宽度大于 1280我们就按照宽度1280进行压缩高度-1他会自己计算朝向我们不用干预按照源朝向输出就好了 // file.data 源文件路径
// outPath 为输出路径
const cmd ffmpeg -i ${file.data} -c:v libx264 -vf scale1280:-1 -crf 28 -c:a copy ${outPath}; 按照上面这样原来30M 的视频可以压缩到2到3M, 而且肉眼看不出 太大差别