ffmpeg / 为视频批量添加水印

ffmpeg / batch addition of watermarks for videos

我用脚本给一个视频添加了动态水印,如何适配它来转换多个视频?

ffmpeg -i test.mp4 -i logo.png -filter_complex "[1]colorchannelmixer=aa=0.6,scale=iw*0.7:-1[a];[0][a]overlay=x='if(lt(mod(t\,16)\,8)\,W-w-W*5/100\,W*5/100)':y='if(lt(mod(t+4\,16)\,8)\,H-h-H*2.5/100\,H*2.5/100)'" -c:v libx264 -an out.mp4

您只需要迭代视频文件:

source_folder=
target_folder=

mkdir -p $target_folder

echo "procesing..."
for file in $source_folder/*.mp4 $source_folder/**/*.mp4 ; do

  if [[ -f $file ]]; then
    filename=$(basename -- "$file")
    echo "source video:"$file "new :"$target_folder/$filename
    ffmpeg -i "$file" -i logo.png -filter_complex "[1]colorchannelmixer=aa=0.6,scale=iw*0.7:-1[a];[0][a]overlay=x='if(lt(mod(t\,16)\,8)\,W-w-W*5/100\,W*5/100)':y='if(lt(mod(t+4\,16)\,8)\,H-h-H*2.5/100\,H*2.5/100)'" -c:v libx264 -an "$target_folder/$filename"
  fi
done;

echo ""
echo "result: $target_folder"
find  $target_folder | sort

示例:

bash script.sh /input /foo/bar/output