我的需求是,合并两个视频(一个视频 A 放在左边,一个视频 B 放在右边),音频选择复制第一个视频的音频
ffmpeg \
-i A.mp4 \
-i B.mp4 \
-filter_complex "[0:v]pad=iw*2:ih[v_wide];[v_wide][1:v]overlay=W/2:0[out_video]" \
-map "[out_video]" \
-c:v libx265 \
-crf 28 \
-map 0:a:0 \
-c:a copy -y \
./C.mp4
但是直接这么做,音量太小了,所以我又进行了一道步骤:把生成的视频 C ,进行音量提升的操作
ffmpeg -i C.mp4 -af volume=20dB -c:v libx265 C_high_volume.mp4
问题是,有没有办法把这两步合成为一步呢?(我觉得这样可以降低处理时间)
1
geekvcn 2022-02-19 23:22:46 +08:00
可以合并,但是我建议你先搞懂所有参数,你处理速度慢不是因为指令分开了,而是重复编码了
|
2
watermeter 2022-02-19 23:28:30 +08:00
你提高音量为啥还要再编码一次视频啊
|
3
crab 2022-02-19 23:33:57 +08:00 1
filter_complex 里加[0]volume=应该可以吧
|
4
movq OP |
8
jackmod 2022-02-20 17:31:10 +08:00
[0:v]pad=iw*2:ih[v_wide];
[v_wide][1:v]overlay=W/2:0[out_video]; [0:a]volume=6dB[ao] -map [out_video]:v -c:v ... -map [ao]:a -c:a aac ... 既然用了 filter_complex ,大多数情况下就没必要用-af -vf 了,所有效果写在一起更容易整理 |
9
littleNorth 2023-03-20 17:17:40 +08:00
@jackmod 你好 可以请教下 ffmpeg 合并视频吗?我把两个视频从 mp4 转成 ts 格式再按时间前后合并成一个 mp4 ,从 mp4 转成 ts 中,我会把两个视频都改成 1280*720 的分辨率,单独看两个视频也都正常,但是合并后后面的一个视频显示大小会被限制在前一个视频的画面大小里面,请问这是啥原因?两个视频是一个竖屏的视频,一个横屏的视频
|
10
jackmod 2023-03-20 19:57:03 +08:00
@littleNorth 画布大小来源于第一个视频。可以先使用 lavfi 的 testsrc 输入作为画布,再在上面辅设要处理的视频。
|