ffmpeg 合并 2 个视频文件时 太慢的问题怎么解决?

2020-10-18 09:19:39 +08:00
 Trinity888

情况描述:

  1. 项目环境:Qt 编写的应用程序,Win10 系统,MySQL 数据库

  2. 学生在考试的过程中,会录制 2 个视频文件,交卷时,需要将 2 个视频文件合并为 1 个视频文件,并且提交至内网的服务器上。

  3. 合并命令如下:

ffmpeg -i a.mp4 -i b.mp4 -filter_complex [0:v]pad=iw2:ih[a];[a][1:v]overlay=w1 out.mp4

现在的情况是:点击交卷时,先合并视频文件,再上传文件,再提交,这个过程非常慢,影响使用了。

大家有更好的解决办法吗,求教,感谢

6824 次点击
所在节点    程序员
54 条回复
falcon05
2020-10-18 09:22:15 +08:00
异步队列
wunonglin
2020-10-18 09:23:06 +08:00
RTX3090 + PCI SSD
coderluan
2020-10-18 09:31:17 +08:00
楼主你这个参数需要重新编解码吧,自然很慢,如果视频本身的参数相同,可以直接用 concat 命令,非常快。
mumbler
2020-10-18 09:31:29 +08:00
系统设计有问题,应该只提交原始资料,后台再统一合并,估计是想节约服务器了。

合并用 ffmpeg 肯定慢,可以试试 mp4box
wdhwg001
2020-10-18 09:32:28 +08:00
如果是直接复制流的话应该不会太慢啊,或者用 mkv 做容器?
yangxin0
2020-10-18 09:32:55 +08:00
加上 copy 选项就快了
yangxin0
2020-10-18 09:33:25 +08:00
你这个只是 remux 就行了
coderluan
2020-10-18 09:34:50 +08:00
上面没看仔细,楼主并不是合并视频,是把视频左右拼接了,这种怎么样都不会太快的。
AX5N
2020-10-18 09:37:06 +08:00
把视频拼在一个画面里需要重编码,重编码没有快的,去搞台配置牛 B 的电脑慢慢跑。
coderluan
2020-10-18 09:38:24 +08:00
没拼接,迷糊了,还是用 ffmpeg concat 就行
mingl0280
2020-10-18 09:48:23 +08:00
你这不是拼接,你这是重编码,不应该在上传前处理的。 其实上传后服务器丢到队列里慢慢处理就行了……
fyooo
2020-10-18 09:53:25 +08:00
love
2020-10-18 09:57:20 +08:00
相同参数的视频貌似可以直接拼接或剪切不用重新编码
laminux29
2020-10-18 10:04:13 +08:00
视频拼接更像是 c 女膜修复手术,左右两瓣都要进行缝合处理( decode + fix + render + encode )才行,并不是说把左右两瓣贴在一起(concat or append)它们就自然黏上了。
wangxkww
2020-10-18 10:59:30 +08:00
要是想快速完成这件事情,在服务端展示的时候放俩播放控件,只要控制能同时播放就好了
mio4
2020-10-18 11:01:50 +08:00
@laminux29 这个比喻绝了
Trinity888
2020-10-18 11:05:17 +08:00
@coderluan 您理解的正确,我们是需要把分别录制的 2 个不同的视频文件,合并拼接在 1 个视频文件中。
incheon
2020-10-18 11:13:47 +08:00
格式工厂
Osk
2020-10-18 11:24:34 +08:00
@Trinity888 快不起来,考试视频动不动几十分钟,cpu 转码速度太慢了,甚至可能 0.几倍的速度,转一个花半小时以上太夸张,除非调用硬件加速试试,但客户端硬件配置不能被你们控制的话会带来一堆问题。
服务器转码也不是不行,但也太烧时间和算力了。

还是尝试一下魔改播放器同时播放吧,要控制俩视频同步播放,应该有解决方案的
love
2020-10-18 11:29:11 +08:00
@laminux29 不要误导人,就楼主这种情况很可能是可以直接 append 的,而 ffmpeg 也有这类功能。
我平时也做视频编辑,把一个文件的视频剪几段下来,再拼回一个新文件,中间并不需要重编码。除非是压制参数不同的片段。

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

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

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

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

© 2021 V2EX