前一段制作一个线上课程,用到了一些相关 ffmpeg 的命令,记录在这里,以备后用。
- 转换 mv4 成为 mp4
ffmpeg -i input.m4v output.mp4
- 在 keynote 里面有一些演示的视频,在 keynote 里面能正常播放,但是使用
Record SlideShow
功能生成的视频文件里面,这些演示的视频就变成静态了,只显示封面图片,根本 没有播放。下面这条命令可以把原来的视频叠加到 ppt 输出的视频上面,第一段演示视频pip-pyarmor.mov
在 30 秒开始播放,第二段演示视频在 120 秒开始播放,使用overlay
过滤器把这两段视频叠加到原来的视频,这样就播放正常了
ffmpeg -i ppt-record.mp4 \
-itsoffset 30 -i ../pip-pyarmor.mov \
-itsoffset 120 -i ../cmd-obf.mov \
-filter_complex "
[1:v]scale=1920:1080[v1];[0:v][v1]overlay=eof_action=pass[m1];
[2:v]scale=1920:1080[v2];[m1][v2]overlay=eof_action=pass"
output.mp4
- 合并多个视频,必须是 mp4 格式的,首先创建文件
filelist.txt
file 'section1.mp4'
file 'section2.mp4'
file 'section3.mp4'
然后在执行下面的命令
ffmpeg -f concat -i filelist.txt -c copy output.mp4
- 为录屏添加空白音频,这样和其他视频合并的时候,不会导致后面视频中声音不同步
ffmpeg -y -i webui-obf.mp4 -filter_complex "anullsrc[a]" -c:v copy -map '0:v' -map '[a]' -shortest output.mp4
- 把两个视频一左一右同时进行播放
ffmpeg -i left.avi -i right.avi -filter_complex "
nullsrc=size=200x100 [background];
[0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
[1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
[background][left] overlay=shortest=1 [background+left];
[background+left][right] overlay=shortest=1:x=100 [left+right]
" output.mp4
- 在视频右下角显示图片
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=main_w-overlay_w-10:main_h-overlay_h-10" output.mp4
- 合并音频和录屏成为一个视频
fmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac output.mp4
- …