我想自动将某些文字在我的视频上“加水印”。基本上我想在我的文件名中创建一个标记(例如“&&”)。然后我希望脚本在“&&”之后获取内容并将其放在“drawtext”内容中。
例如,名为“Video2132&& The First Test”的文件将使“text =”之后的部分成为“第一次测试”。
以下代码在没有drawtext部分的情况下工作正常。
只要我添加该功能,脚本就会运行,但会创建空的视频文件(零字节)。
for f in ./*.mov; do
printf '%s\n' "Doing stuff with: ${f}"
i='0'
while (( i <= 5 )); do
ffmpeg -ss "$(( i * 25 ))" -t 25 -i "${f}" -acodec copy -vf drawtext="fontfile=/Users/mac1/Library/Fonts/Gillsanslight.ttf: \
text='Stack Overflow': fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5: \
boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2" -codec:a copy "${f%.mov}.${i}.mov" -loglevel quiet
(( i++ ))
done
done
答案 0 :(得分:0)
将文件名分配给变量,并将FILENAME PART
替换为文件名变量。
您没有指定名称Video2132 && The First Test
来自何处。
$file_name=$(echo "Video2132 && The First Test" |sed 's/^.*&& //') # TODO, extract the name
然后从
更改过滤器drawtext="fontfile=/System/Library/Fonts/Arial.ttf:text='FILENAME PART':fontcolor=red@1.0:fontsize=70:x=00:y=40"
到
drawtext="fontfile=/System/Library/Fonts/Arial.ttf:text='"$file_name"':fontcolor=red@1.0:fontsize=70:x=00:y=40"