ffmpeg剪辑视频简单应用
背景:
博主非视频剪辑从业者,非软开码农, 不想花费大量时间进行ffmpeg的学习
搞这个的初衷是,被剪辑video文件太大,导入剪映耗时长,且剪映导出分辨率低,且不想花钱 = =
因此只做最简单的视频剪辑应用分享,达到截取视频,简单音视频抽取及重组的目的即可。
1.安装
https://ffmpeg.org/download.html#build-windows
我是windows上面用,所以直接上ffmpeg官网上下了一个windows版本的安装包。解压缩就行
- 修改系统环境变量:增加环境变量 \\local\ffmpeg\ffmpeg-2024-01-17-git-8e23ebe6f9-essentials_build\bin
- 调试: 任意terminal敲ffmpeg后按tab键,可以弹出ffmpeg.exe就算安装好了
2.剪辑
我的需求很简单
- 从mp4中截取mp3出来
- mp4文件裁剪
- 替换mp4中的mp3
- 微调mp4中音视频同步
1.从mp4中截取mp3出来:
我不需要设定采样率等细节,所以就单纯抽取audio音频mp3文件
ffmpeg -i $VIDEO -y -vn $AUDIO
2.mp4文件裁剪
我的需求是$INPUT_VIDEO的1h11m30s开始剪辑,剪辑时长为3m10s.输出文件$OUTPUT_VIDEO code如下
ffmpeg -i $INPUT_VIDEO -ss 1:11:30 -t 00:03:10 -c:v copy -c:a copy $OUTPUT_VIDEO
3.替换mp4中音频
同样我不需要音视频对齐,只是直接替换即可。我的mp3时间比mp4会短一点所以mp4最后是静音效果
ffmpeg -an -i $INPUT_VIDEO -vn -i $INPUT_AUDIO -c:v copy $OUTPUT_VIDEO
4.微调mp4中音视频同步
完成步骤3前,我就会先尽量让$INPUT_VIDEO与$INPUT_AUDIO对齐。但是由于ffmpeg的时间戳是1s为单位,无法做更细节的调整。但是由于我在try step2的时候,发现由于ffmpeg在做video裁剪的时候,audio其实是另外通道进行采样。那么第一个采样点前的时间就会被干掉。因此如果我的音频想要向前调整,只需要不断的吃入video,再裁剪,就可以实现音频以采样率的步进(比如采样率是144k,那么就是6.9ms的步进)向前移动
因此我的傻瓜做法:
先make $INPUT_VIDEO保留前面一段无用的片段,便于我微调牺牲掉他们
然后不断用下面的方式进行微调,直到得到满意的效果
ffmpeg -i $INPUT_VIDEO -ss 00:00:01 -t 00:03:09 -c:v copy -c:a copy $OUTPUT_VIDEO