ffmpeg 命令行
首先,并非专业视频处理人员;以下命令都是我从网上搜索后修改以为己所用。
图片转视频
# gif 转视频(DURATION:时长,gif会循环播放)
ffmpeg -ignore_loop 0 -t DURATION -f gif -i "INPUT.gif" -vcodec libx264 -crf 5 "OUTPUT.mp4"
# png、jpg 转视频
ffmpeg -loop 1 -framerate 30 -f image2 -t DURATION -i "INPUT.jpg" -vcodec libx264 -crf 5 "OUTPUT.mp4"
给视频添加音轨
ffmpeg -y -i "INPUT.mp4" -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -shortest -c copy -c:a aac -bsf:v h264_mp4toannexb "OUTPUT.mp4"
修改视频分辨率
使用以下命令可以将视频分辨率修改为1280x768
,不同比例的视频会填充黑边
ffmpeg -i "INPUT.mp4" -vf "scale=1280:768:force_original_aspect_ratio=decrease,pad=1280:768:(ow-iw)/2:(oh-ih)/2" OUTPUT.mp4
合并视频
如果视频都是相同格式,可以将视频用一下格式列举在一个文件中(也可以用来合并 mp3 文件):
# concat.txt
file input1.mp4
file input2.mp4
file input3.mp4
然后使用以下命令拼接:
ffmpeg -safe 0 -f concat -i "concat.txt" -c copy "OUTPUT.mp4"
如果是不同格式的视频合并:
ffmpeg -i INPUT1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
ffmpeg -i INPUT2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
ffmpeg -i INPUT3.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input3.ts
ffmpeg -y -i "concat:input1.ts|input2.ts|input3.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart OUTPUT.mp4
截取视频段
以下命令将从视频 1 分钟的位置开始,截取 15 秒。不要用-c copy
,不然视频会缺少关键帧。
ffmpeg -ss 00:01:00 -accurate_seek -i INPUT.mp4 -t 15 OUTPUT.mp4
加速视频和音频
以下命令将 mp3 加速为1.1
倍
ffmpeg -i INPUT.mp3 -filter_complex "[0:a]atempo=1.1[a]" -map "[a]" "OUTPUT.mp3"
以下命令将视频和音频同时加速为1.3
倍(1/1.3 = 0.769230769231
)
ffmpeg -i INPUT.mp4 -filter_complex "[0:v]setpts=0.769230769231*PTS[v];[0:a]atempo=1.300000[a]" -map "[v]" -map "[a]" OUTPUT.mp4
添加srt字幕
ffmpeg -i INPUT.mp4 -i INPUT.srt -c:s mov_text -c:v copy -c:a copy OUTPUT.mp4