ffmpeg操作速查

切割音频

ffmpeg -i zhaoliying.mp3 -vn -acodec copy -ss 00:00:00 -t 00:00:10 zhaoliying_10s.mp3

切割视频

ffmpeg -i target_video.mp4 -vcodec copy -acodec copy -ss 00:00:00 -t 00:00:05 target_video_5s.mp4

用ffmpeg给视频批量加水印

提取音频

ffmpeg -i target_video_0829_1.mp4 -f mp3 -vn target_video_0829_1.mp3

改fps

ffmpeg -i “target_video_0829_1.mp4” -r 29.97 -b:v 10M “target_video_0829_1_fps2997.mp4”

拼接视频

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex hstack output.mp4

图片转视频

ffmpeg -f image2 -i %d.png -vcodec libx264 -r 29.97 -b:v 10M tt.mp4

旋转视频

ffmpeg -i input.mp4 -vf “transpose=1” output.mp4

拼接音频

sox 1.mp3 2.mp3 out.mp3

这边是发现ffmpeg拼不起来,然后用sox发现报错是image.png
所以要调整一下sample-rate和channels
ffmpeg -i 1.mp3 -ac 1 -ar 16000 out1.mp3

改音频为16K

ffmpeg -i 01.mp3 -acodec pcm_s16le -ac 1 -ar 16000 1.wav

改视频size

ffmpeg -i ziyi_C049_bg_4K.mp4 -vf scale=1920:1080 ziyi_C049_bg_1080p.mp4 -hide_banner

切割画面

ffmpeg -i input -vf crop=480:480:186:0 output

https://ask.csdn.net/questions/227737

加水印

ffmpeg -i audio_0_1s.avi -vf "movie=logo.png[watermark];[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " output.avi

批量处理

参考:How to batch convert/multiplex any files with ffmpeg
改了一个脚本:

1
2
for %%a in ("*.*") do ffmpeg -i "%%a" -vf "movie=logo_L.png[watermark];[in][watermark] overlay=0:0[out] " "newfiles\%%~na.mp4"
pause

在terminal运行脚本

上面的链接用的是.bat,在linux需要用shell(shell学习指南)编写脚本。

在terminal运行.sh脚本

执行Shell脚本(多种方法)

首先新建一个文件test.sh,然后使用bash命令运行:
$ bash test.sh

运行command

在测试过程中得知command和script不太一样,用以下command成功了:
for vid in *.avi; do ffmpeg -i "$vid" -vf "movie=logo_L.png[watermark];[in][watermark] overlay=0:0[out] " "${vid%.*}_logo.avi"; done