通过 ffmpeg 压缩视频很慢 时间敏感的需求该怎么设置参数呢?

7 天前
 v423

前端上传的时候需要预压缩 希望 1 分钟的视频压缩时间能控制在 1 分钟以内, 同时保证画面清晰不能有马赛克, 压缩后视频在 720p 以上 码率 2000k 以上

现在的方案是通过 ffmpeg.wasm 压缩, 官方测试结果比原生 ffmpeg 慢 10-20 倍

项目中测试只要涉及画面转码都是严重超过 1 分钟 退而求其次尝试维持视频流只减帧, 但是维持原视频流需要 copy 参数, 此时无法通过-r 设置参数, filter 只是过滤器无法压缩视频体积

昨天找了一下午没找到可用的参数, 只能请教大佬了

参数如下

const args = [
    "-i",
    "input.mov",
    "-preset",
    "ultrafast",
    "-c:a",
    "copy",
    "-c:v",
    "copy",
    "-r", "24",
    "output.mp4"
]
2512 次点击
所在节点    FFmpeg
36 条回复
1039460820
6 天前
压的太快,分辨率就要降下来
mxT52CRuqR6o5
6 天前
@mightybruce b 站是用 ffmpeg 解码选一些关键帧来在前端选封面的(不然就得等视频传完才能选封面),不是用来转码的
kujou
6 天前
追求速度视频流可以用 nvenc 编码 hevc (使用 gpu ),音频流随意(可以 LCAAC 也可以 HEAACv2 ,最后 ffmpeg 混流封装。
如果单纯 cpu 编码,速度和性价比永远是反比的,就看你自己了。不过 cpu 压是慢一些。
soul11201
6 天前
不就是上传时间影响用户体验了吗,这个简单,🚫限制上传视频大小为 5M ,让制造问题得人去解决问题,问题不分分钟解决了吗😄😄😄
soul11201
6 天前
一直感觉微信聊天中发的视频压缩做的很不错,不知道有没有大佬能科普下里面怎么做的权衡。
whi147
6 天前
webcodec
wzy44944
6 天前
只是上传慢的话为啥不在上传速度上想想办法,客户端压缩即使做出来了一版维护成本也太高了。实在想压缩不如给业务提供个 pc 端小工具让他们自行压缩下再上传(其实可以用微信上传给自己再下载下来)
duanxianze
6 天前
@soul11201 手机可以调用 soc 视频编解码模块,性能比纯浏览器 cpu 计算强太多了
ETiV
6 天前
从安全上讲,客户端预压缩、再上传等于是有手段可以绕过压缩直接上传,其实是违背了后端不信任任何前端发过来的数据的核心宗旨

最好不要有这种方案
lbp0200
6 天前
上传到云端,让云厂商来压缩
CPU 压缩视频就是这么慢,不用想了
zuotun
6 天前
Web 基本上别指望了,能用就不错了。要么直接原封不动上传到某个高速存储然后服务器再去处理,要么要求客户端装个小工具,浏览器里想办法调用这个外部工具靠硬件加速转码,我这就是这样做的,而且简单粗暴就是监听一个本地端口实现通信。
hefish
6 天前
自己开发一套基于 js 的 ffmpeg 吧,就叫他 jsmpeg 。。。。明天发布测试版。。
mrtctl
6 天前
1. “维持原视频流” 和 “减帧” 从原理上就无法实现:几乎在所有的现代编码格式里,帧间压缩都是核心内容。也就是说帧和帧并不是独立的,没有办法在直接“减掉某一帧”的情况下正常解码其他帧。

2. 720p 实时( 1 分钟转码 1 分钟的视频)的视频转码就算是纯 CPU 编码也不是很大的性能负担。前端编码的话可以看看上面说的 WebCodecs 。

3. 如果一定要用 ffmpeg.wasm ,试了一下编码 720p 1 分钟视频,单线程 30 秒内,多线程不到 5 秒就可以完成编码( Safari @ M2 Pro )。应该也算可用的?



llsquaer
6 天前
@soul11201 你让我想起了 给小娃报名。需要证件的照片,房产照片,户口本等。总共 6 张照片去传。结果教育局的网站只有一个 input button 。也就是说只能传一张图。

这些还难不倒我。开一个在线 ps ,把所有照片拼在一起,ok 。

你以为传完了?

传的时候发现只能传 1M 还是 2M 以下。有点忘了。

好像也没啥问题,在线压缩下。

结果死活差那么 100kb 左右的压不下去。

最后没法了,重新编辑下排版,尽量的缩小画布尺寸还得保持看得清。上面流程在走一遍。

---------------------------
我怀疑差不多就是用了你的思路,难道是你徒弟?
a1248499257
6 天前
之前尝试过 ffmpeg.wasm 在 web 端裁剪视频 + 压缩,但是在 ios 15 因为 simd 不兼容(好像),还是放弃了这个方案,放到服务端去操作
soul11201
6 天前
@llsquaer 我是他们徒弟,政务信息系统很多都这样,把运维开发成本转嫁给用户使用成本了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1095204

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX