尝试ffmpeg进行上传前压缩视频
目前尝试浏览器H5版本可以压缩

<script src="https://unpkg.com/@ffmpeg/ffmpeg@0.9.5/dist/ffmpeg.min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script><h2>视频前端压缩</h2>
<video id="video" controls></video><br/>
<input type="file" id="upload">
<p id="text"></p>
<script>const { createFFmpeg, fetchFile } = FFmpeg;const text = document.getElementById('text');const ffmpeg = createFFmpeg({log: true,progress: ({ ratio }) => {text.innerHTML = `完成率: ${(ratio * 100.0).toFixed(2)}%`;},});const transcode = async ({ target: { files }  }) => {const { name } = files[0];text.innerHTML = '正在加载 ffmpeg-core.js';await ffmpeg.load();text.innerHTML = '开始压缩';ffmpeg.FS('writeFile', name, await fetchFile(files[0]));// '-b','2000000'  值越小  压缩率越大await ffmpeg.run('-i', name,'-b','2000000','put.mp4');text.innerHTML = '压缩完成';const data = ffmpeg.FS('readFile', 'put.mp4');const video = document.getElementById('video');video.src = URL.createObjectURL(new Blob([data.buffer], {type: 'video/mp4'}));}document.getElementById('upload').addEventListener('change', transcode);</script>

ffmepg地址:https://unpkg.com/@ffmpeg/ffmpeg@0.9.5/dist/ffmpeg.min.js

尝试了H5版小程序,在微信调试工具下和浏览器下压缩是没问题
企业微信浏览器和微信浏览器下无效,把我整懵了,着实有点坑

const { createFFmpeg, fetchFile } = require('../../components/ossUpload/ffmpeg.min.js');
uni.chooseVideo({sourceType: ['camera', 'album'],success: function (resdata) {const ffmpeg = createFFmpeg({log: true,progress: ({ ratio }) => {_this.loadText = `${(ratio * 100.0).toFixed(2)}%`console.log(`完成率: ${(ratio * 100.0).toFixed(2)}%`)}});const transcode = async (files) => {const { name } = files;_this.uploadLoad = true_this.loadText = "压缩中"console.log('正在加载 ffmpeg-core.js')await ffmpeg.load();console.log('开始压缩')ffmpeg.FS('writeFile', name, await fetchFile(files));// '-b','2000000'  值越小  压缩率越大await ffmpeg.run('-i', name,'-b','200000','put.mp4');console.log('压缩完成')const data = ffmpeg.FS('readFile', 'put.mp4');let file = new File([data.buffer], name, { type: "video/mp4" });let date = new Date();let currentTime = date.getFullYear() + '-' + (date.getMonth() - 0 + 1) + '-' + date.getDate();let nameArr = name.split('.');let key = currentTime + '/' + Math.floor((Math.random() * 1000000)) + '/' + Math.floor((Math.random() *1000000)) + '.' + nameArr[nameArr.length - 1];let length = _this.fileList.length - 1;let formData = {key:key,token:_this.formData['token']}await _this.uploadFile(file, formData, length)}transcode(resdata.tempFile)}
});

注:‘-b’,‘2000000’,通过修改比特率来达到压缩视频的效果,2000000,这个压缩效果很不错,亲测
还可以用 -crf 方式压缩,设置 -qscale质量参数压缩视频,不过这种方式只支持x264
ffmepg命令参数说明:https://www.cnblogs.com/chen1987lei/archive/2010/12/03/1895242.html

视频倒放:await ffmpeg.run(‘-i’, name,‘-vf’, “reverse”,‘put.mp4’); 视频剪切:
await ffmpeg.run(‘-ss’,‘00:00:00’,‘-t’,‘00:00:05’,‘-i’,
name,‘-vcodec’, “copy”,“-acodec”,“copy”,‘put.mp4’);

去除视频背景音乐:
只需将上面命令加上 ‘-an’ 去除音频

如:await ffmpeg.run(‘-i’, name,‘-an’,‘-b’,‘2000000’,‘put.mp4’); 即可

网页H5效果还是可以的!

H5-ffmpeg.js压缩视频相关推荐

  1. 七十行代码教你使用 python ffmpeg 压缩视频,再也不用担心视频过大了

    前期准备 最近要压缩视频,然后发现一些压缩视频的工具要是收费,要么有水印,完全不符合要求啊.正当我发愁的时候突然想到,去年的时候接触过 ffmpeg ,可以用python ffmpeg 来压缩视频啊, ...

  2. js版ffmpeg压缩视频以及去除背景音乐

    ffmepg地址:https://unpkg.com/@ffmpeg/ffmpeg@0.9.5/dist/ffmpeg.min.js 这个是网上编译好的,功能还挺多的,我自己不会编译,只能用别人的 用 ...

  3. ffmpeg 压缩视频

    ffmpeg 压缩视频 代码 ffmpeg -i input.mp4 -r 30 -b:a 64k output.mp4 30: 帧数 64k: 表示音频的码率为64kb/s

  4. 用FFMPEG SDK进行视频转码压缩时解决音视频不同步问题的方法(转) PTS DTS

    用FFMPEG SDK进行视频转码压缩的时候,转码成功后去看视频的内容,发现音视频是不同步的.这个的确是一个恼火的事情.我在用FFMPEG SDK做h264格式的FLV文件编码Filter的时候就碰到 ...

  5. Linux 使用ffmpeg修改和压缩视频文件格式

    Linux 使用ffmpeg修改和压缩视频文件格式 1.安装 ffmpeg 2. 使用ffmpeg修改和压缩视频文件格式 这里使用的ffmpeg是使用命令行进行修改和压缩视频文件格式. 我们使用的操作 ...

  6. 【视频编码】ffmpeg压缩视频文件

    一.引言 首先,了解下播放视频的基本流程,如下图所示: 解封装:就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据.如上图,将MP4和FLV格式解封装成视频数据H264.MPE ...

  7. PHP使用ffmpeg压缩视频

    PHP使用ffmpeg压缩视频 视频压缩可以有一下方式: 1.压缩分辨率 例如视频的分辨率是720x1280,可以压缩分辨率为360x640 2.压缩帧数 通过压缩视频的帧数来压缩,可以压缩视频的帧数 ...

  8. 如何最大效率压缩视频文件(ffmpeg)

    转载并翻译,原文:stackexchange 我测试了针对这个问题提出的大多数其他答案,测试数据结论如下.以下是我测试的方法: (BR)修改码率 # $infile: 输入视频路径 # $outfil ...

  9. ffmpeg压缩视频

    经常采用python+opencv处理视频会发现,当用VideoWriter写单帧的时候,实际上不会进行帧间压缩的.所以,往往处理一个视频的所有帧以后发现,输出视频变得非常大.因为就是一堆图片的集合. ...

最新文章

  1. C语言网络编程:UDP通信实现
  2. NLP任务非Transformer不可?
  3. 网页加速系列(七)、 网页加速之异步加载
  4. linux 内存占用_分享Linux内存占用几个案例
  5. system函数-linux
  6. 0215互联网新闻 | TikTok在美月度用户数量过去三个月内增加3000万;5G智能手机测试机首批正式交付...
  7. php 之 Final 关键字
  8. linux远程登录命令rlogin,Linux rlogin命令
  9. 算法章节 递归、排序、⼆分查找
  10. HTML5: 利用SVG动画动态绘制文字轮廓边框线条
  11. SAP License:SAP MM配置中的一些常用的 TCODE
  12. 关闭smartview 版本更新提示
  13. MYSQL数据库使用手册
  14. JavaWeb学习笔记(六)—— JSP连接数据库SQL Server
  15. 关于python中的三个点【...】
  16. python初学火车座位判断_初学Python实现学校图书馆座位自动抢座预约
  17. node-java_node-jvm
  18. UVALive 7308 Tom and Jerry 猫抓老鼠 物理题
  19. SAP 散装物料作用及设置
  20. 视觉错觉的举例------------善于发现生活中的

热门文章

  1. 单元主服务器解决性能瓶颈的方法,HBase
  2. 【JZOJ1758】过河
  3. day1—ECS阿里云云计算服务
  4. [Spring手撸专栏学习笔记]——把AOP动态代理,融入到Bean的生命周期
  5. P2员工月度工作P160-P163
  6. 岁月凶残,敬请珍惜——得知早已不能过五四节时之随想[转自伍迷]
  7. 钟汉良日记:你知道吗?写日记可以影响三代人!
  8. 按键精灵_字符点阵制作
  9. 说出ArrayList,Vector,nbsp;Linke…
  10. php date t_细说PHP的日期时间函数date()