ffmpeg音视频处理和格式转换

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

你可能感兴趣的:(ffmpeg音视频处理和格式转换)