用ffmpeg给视频批量加水印

加水印

一开始用
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
logo太大了,不知道怎么调整,后来让同事帮忙做了一个调整好位置的logo_L.png,然后直接合成:
ffmpeg -i audio_0_1s.avi -vf "movie=logo_L.png[watermark];[in][watermark] overlay=0:0[out] " output.avi

批量处理

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

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

附录

什么是shell

Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。——Shell是什么?1分钟理解Shell的概念!

linux的shell,bash,terminal关系

linux的shell,bash,terminal关系
bash是shell的其中一种,bash的全称就是Bourne-again shell。而terminal是一个用户终端,用于启动shell,也就是需要打开terminal来使用shell。

shell命令:可以让shell工具解释的命令(代码)。
shell脚本:一系列shell命令的集合。

短格式选项和长格式选项

Linux 的选项又分为短格式选项和长格式选项。

  • 短格式选项是长格式选项的简写,用一个减号-和一个字母表示,例如ls -l。
  • 长格式选项是完整的英文单词,用两个减号--和一个单词表示,例如ls --all。

一般情况下,短格式选项是长格式选项的缩写,也就是一个短格式选项会有对应的长格式选项。当然也有例外,比如 ls 命令的短格式选项-l就没有对应的长格式选项,所以具体的命令选项还需要通过帮助手册来查询。
(来源:Linux Shell命令的基本格式)

常见shell命令

  • ls:列出文件列表
  • echo:输出字符串

写着写着就变成linux使用指南了,有空的时候分开单独写一篇吧

你可能感兴趣的:(用ffmpeg给视频批量加水印)