侧边栏壁纸
博主头像
suke

ah?

  • 累计撰写 54 篇文章
  • 累计创建 38 个标签
  • 累计收到 103 条评论

目 录CONTENT

文章目录

ffmpeg常用参数以及画中画基础命令

suke
2022-09-03 / 0 评论 / 6 点赞 / 473 阅读 / 1,316 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-09-03,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

image

常见参数说明

-c copy:直接复制,不经过重新编码
-y 覆盖同名输出
-c:v:指定视频编码器 libx265 / libx264
-c:a:指定音频编码器 aac
-i:指定输入文件
-c:指定编码器 
-an: 去除音频
-vn: 去除视频流 
-threads 5 指定多线程数
-preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
-b 设定视频流量,默认为200Kbit/s 内网设置2048
-b:v  设定视频流量,默认为200Kbit/s 内网设置 2048k 或 1024k
-r 设定帧速率,默认为25
-loop 1 表示图片无限循环
-shortest 表示音频文件结束
-ar 指定音频采样率 比如48000
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-acodec: 音频选项, 一般后面加copy表示拷贝
-vcodec:视频选项,一般后面加copy表示拷贝 h264则为h264编码
-crf 在优先保证画面质量(也不太在乎转码时间)的情况下,使用-crf参数来控制转码是比较适宜的。这个参数的取值范围为0~51,其中0为无损模式,数值越大,画质越差,生成的文件却越小。从主观上讲,18~28是一个合理的范围。18被认为是视觉无损的(从技术角度上看当然还是有损的),它的输出视频质量和输入视频相当。

画中画画面分割

基本说明 拼接多个的时候要注意输出音频和视频是否对的上,有无音画不同步的现象,其次就是选择哪个输入源的音频
-map 0:a 则代表使用第一个视频的音频 依次类推;
-threads 5 指定线程 加速
-c:a copy 音频不编码直接copy 如果遇到需要处理的则编码 常用的 acc
-preset:v ultrafast 输出视频质量
-c:v libx264 输出视频编码

两画面等分

分辨率自己可以调整,单个画面缩放得尺寸要和总的保持对应关系 不然填充有问题
其中换行符在windows上运行时请替换/^

ffmpeg.exe -y -re -i  target.mp4 -re -i target.mp4 -filter_complex  \
"nullsrc=size=1920x1080 [base]; \
[0:v] setpts=PTS-STARTPTS,scale=960x1080 [left];  \
[1:v] setpts=PTS-STARTPTS,scale=960x1080 [right];  \
[base][left] overlay=1 [tmp1]; \
[tmp1][right] overlay=1:x=960"  -c:v libx264 out.mp4

四画面等分 2*2

ffmpeg.exe -re -i  target.mp4 -re -i target.mp4 -re -i target.mp4  -re -i target.mp4 -filter_complex  \
"nullsrc=size=1920x1080 [base]; \
[0:v] setpts=PTS-STARTPTS,scale=960x540 [upleft]; \
[1:v] setpts=PTS-STARTPTS,scale=960x540 [upright]; \
[2:v] setpts=PTS-STARTPTS,scale=960x540 [downleft]; \
[3:v] setpts=PTS-STARTPTS,scale=960x540 [downright]; \
[base][upleft] overlay=1 [tmp1]; \
[tmp1][upright] overlay=1:x=960 [tmp2]; \
[tmp2][downleft] overlay=1:y=540 [tmp3]; \
[tmp3][downright] overlay=1:x=960:y=540" -c:v libx264 out.mp4 

四画面 非均分 中间大 右侧个3小的

ffmpeg.exe -re -i  target.mp4 -re -i target.mp4 -re -i target.mp4 -re -i target.mp4 -filter_complex \
"nullsrc=size=1920x1080 [base]; \
[0:v] setpts=PTS-STARTPTS,scale=1440x1080 [middle]; \
[1:v] setpts=PTS-STARTPTS,scale=480x360 [rightup]; \
[2:v] setpts=PTS-STARTPTS,scale=480x360 [rightmiddle]; \
[3:v] setpts=PTS-STARTPTS,scale=480x360 [rightdown]; \
[base][middle] overlay=1 [tmp1]; \
[tmp1][rightup] overlay=1:x=1440 [tmp2]; \
[tmp2][rightmiddle] overlay=1:x=1440:y=360 [tmp3]; \
[tmp3][rightdown] overlay=1:x=1440:y=720" -threads 5 -map 0:a -c:a copy -preset:v ultrafast -c:v libx264 out.mp4 


四画面 非均分 独立音频输入

-map 4:a 使用指定的音频
这个案例因为在windows测试 因此换行符为^

ffmpeg.exe -y -re -i  target.mp4 -re -i target.mp4 -re -i target.mp4 -re -i target.mp4 -vn -i target.mp4 ^
-filter_complex  ^
"nullsrc=size=1920x1080 [base]; ^
[0:v] setpts=PTS-STARTPTS,scale=1440x1080 [middle]; ^
[1:v] setpts=PTS-STARTPTS,scale=480x360 [rightup]; ^
[2:v] setpts=PTS-STARTPTS,scale=480x360 [rightmiddle]; ^
[3:v] setpts=PTS-STARTPTS,scale=480x360 [rightdown]; ^
[base][middle] overlay=1 [tmp1]; ^
[tmp1][rightup] overlay=1:x=1440 [tmp2]; ^
[tmp2][rightmiddle] overlay=1:x=1440:y=360 [tmp3]; ^
[tmp3][rightdown] overlay=1:x=1440:y=720" -threads 5 -map 4:a -c:a copy -preset:v ultrafast -c:v libx264 out.mp4 

五画面 一大四小

大占3/4宽 小 1/4宽+高

ffmpeg.exe -re -i  target.mp4 -re -i xxxtest.jpg  -re -i target.mp4 -re -i 158.mp4  -re -i target.mp4  -filter_complex  \
"nullsrc=size=1920x1080 [base]; \
[0:v] setpts=PTS-STARTPTS,scale=1440x1080 [middle]; \
[1:v] setpts=PTS-STARTPTS,scale=480x270 [rightup]; \
[2:v] setpts=PTS-STARTPTS,scale=480x270 [rightmiddle1]; \
[3:v] setpts=PTS-STARTPTS,scale=480x270 [rightmiddle2]; \
[4:v] setpts=PTS-STARTPTS,scale=480x270 [rightdown]; \
[base][middle] overlay=1 [tmp1]; \
[tmp1][rightup] overlay=1:x=1440:y=0 [tmp2]; \
[tmp2][rightmiddle1] overlay=1:x=1440:y=270 [tmp3]; \
[tmp3][rightmiddle2] overlay=1:x=1440:y=540 [tmp4]; \
[tmp4][rightdown] overlay=1:x=1440:y=810"  -c:v libx264 out.mp4 

合成画面推流到rtmp

ffmpeg.exe -y  ^
-re -i http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4 ^
-re -i http://vfx.mtime.cn/Video/2019/03/18/mp4/190318231014076505.mp4  ^
-re -i http://vfx.mtime.cn/Video/2019/03/19/mp4/190319222227698228.mp4 ^
-re -i http://vfx.mtime.cn/Video/2019/03/19/mp4/190319212559089721.mp4 ^
-filter_complex  ^
"nullsrc=size=1920x1080 [base]; ^
[0:v] setpts=PTS-STARTPTS,scale=1440x1080 [middle]; ^
[1:v] setpts=PTS-STARTPTS,scale=480x360 [rightup]; ^
[2:v] setpts=PTS-STARTPTS,scale=480x360 [rightmiddle]; ^
[3:v] setpts=PTS-STARTPTS,scale=480x360 [rightdown]; ^
[base][middle] overlay=1 [tmp1]; ^
[tmp1][rightup] overlay=1:x=1440 [tmp2]; ^
[tmp2][rightmiddle] overlay=1:x=1440:y=360 [tmp3]; ^
[tmp3][rightdown] overlay=1:x=1440:y=720" -threads 5 -map 0:a -c:a copy -preset:v ultrafast -c:v libx264 -f flv rtmp://127.0.0.1:1935/live/suc 

6

评论区