1,mp4处理
1,mp4去掉音轨
for i in *.mp4; do ffmpeg -i "$i" -vcodec copy -an "${i%.*}.removeAudio.mp4"; done
-vcodec copy的意思是video codec,只copy视频出来。
2,mp4倍速播放(仅视频,适用于去掉音轨后的mp4)
for i in *.removeAudio.mp4; do ffmpeg -i "$i" -r 10 -filter:v "setpts=0.25*PTS" "${i%.*}.speed.mp4"; done
-filter:v "setpts=0.25PTS"的意思是原视频0.25,即4倍速播放。
3,mp4倍速播放(音视频)
for i in *.mp4; do ffmpeg -i "$i" -filter_complex "[0:v]setpts=0.25*PTS[v];[0:a]atempo=4.0[a]" -map "[v]" -map "[a]" "${i}.mp4"; done
[0:v]setpts=0.25PTS[v]是原视频0.25,即4倍速播放,[0:a]atempo=4.0[a]是音频调整为4倍速播放。
4,mp4视频压缩
for i in *.removeAudio.mp4; do ffmpeg -i "$i" -b:v 300k -vf scale="iw/2:ih/2" "${i%.*}.300bit_scale300.mp4"; done
码率为300k,-vf scale="iw/2:ih/2"表示宽高各为原来的一半。
2,格式转换
1,mp4转gif
for i in *.mp4; do ffmpeg -i "$i" -r 10 -vf scale=300:-1 -frames: 60 "${i%.*}.gif"; done
遍历当前文件夹所有mp4,帧率-r为10,-vf scale为300:-1的意思是宽度为300,高度等比例,-frames是最多有多少帧。
for i in *.mp4; do ffmpeg -i "$i" -r 10 -vf scale=304:-1 -ss 0 -t 6 "${i%.*}.gif"; done
-ss 0 -t 6表示截取视频从0秒到第6秒。
2,webp转gif
for i in *.webp; do ffmpeg -i "$i" "${i%.*}.gif"; done
3,mp4转webp
for i in *.removeAudio.speed.mp4; do ffmpeg -i "$i" -vcodec libwebp -loop 1 -frames: 20 -an -vsync 0 -s 304:540 "${i%.*}.webp"; done
-frames: 20为帧率,-s 304:540为webp的宽高
4, gif转webp
for i in *.gif; do ffmpeg -i "$i" "${i%.*}.webp"; done
网友评论