- Windows系统下利用FFmpeg快捷加文字水印
- FFmpeg的安装
- 开始项目-让视频自动加文字水印
- **第一步,获取需要处理的文件**
- **第二步,使用ffmpeg挨个给视频文件加文字水印**
- **第三步,封装py程序,能够直接运行**
- **其他注意事项**
- 完整代码
- 参考文章
这是我学习Python以来自己写的第一个program,可以说让我明白了编程的快乐,也明白的这其中的艰难,远不是看了教材就足够的。
希望记录自己的进步的同时,也能够为其他人提供一定的助益。
FFmpeg的安装FFmpeg是一款针对视频的处理软件,需要使用命令行的方式进行使用。这种使用的方式可以让FFmpeg实现很多功能,并且可以自动化处理。
FFmpeg的官网是http://ffmpeg.org/,因为FFmpeg不仅需要核心程序,还需要很多的编译包,类似于Python不仅需要Python,还需要很多的第三方库一个道理,所以建议程序新手可以直接下载打包好的FFmpeg,应对很多基础的需求就够用了。
Windows系统可以去这个GitHub页面直接下载ffmpeg-xxx-latest-win64-gpl-xxx.zip,
类似于下图:
解压之后有两个文件:
其中bin里面有三个程序
doc里面有很多html
然后打开Windows的设置,搜索“环境变量”,选择“编辑系统环境变量”,再选择“环境变量”,再选择“path”点击下面的编辑,加入刚刚bin文件夹的路径,至此,所有的FFmpeg就快速配置好了。
因为目前只学了Python,所以只能用Python写相关代码。
第一步,获取需要处理的文件originpath = 'D:\小大熊猫' #确认视频文件所在路径
vdname = "小大熊猫" #让想要加水印的视频拥有统一的元素,比如xx-视频.MP4
originnamepath = []
for root, dirs, files in os.walk(originpath):
for name in files:
if vdname in name:
originnamepath.append(os.path.join(root,name))
第二步,使用ffmpeg挨个给视频文件加文字水印
import os
for i in originnamepath:
staus = os.popen ('ffmpeg -hide_banner -i ' + i + ' -vf "drawtext=fontsize=50:fontfile=C\:/Windows/Fonts/msyh.ttc:x=W-tw-50:y=H-abs(sin(t/12*PI)*200):fontcolor=white:alpha=0.4:text=小大熊猫"' + ' -b:v 15000k -r 25 D:\小大熊猫\logo-' + os.path.basename(i) + ' -y')
导入os函数,然后使用os.popen单独打开管道,执行cmd命令,其实os.popen 函数括号中的内容也是你如果要手动使用FFmpeg时输入的命令。
接下来分布解析这些命令的写法:
-hide_banner : 是在导出的视频中不出现FFmpeg的相关水印信息
-i (文件地址) : 是确定所要处理的文件
-vf "drawtext=fontsize=50:fontfile=C\:/Windows/Fonts/msyh.ttc:x=W-tw-50:y=H-abs(sin(t/12*PI)*200):fontcolor=white:alpha=0.4:text=小大熊猫"
是添加水印的命令
fontsize是水印的字体大小;fontfile是水印字体所在的路径,如果是英文字体这项可以不写,但是如果是中文字体,这里一定要写清楚,而且需要用Linus的文件转置写法;x和y是水印的位置,这里y使用了sin函数,可以使水印上下跳动;fontcolor是水印颜色;alpha是水印透明度
-b:v 15000k -r 25 :是确定导出文件的帧率和码率,保证导出文件还是高清的
D:\xxx\logo- + os.path.basename(i) : 是确定了最后加完水印的视频文件所在的路径和名称,os.path.basename 函数是专门用来提取文件名+扩展名的函数
-y : 是确认重新覆写文件的,如果你同路径有同名文件,将被全部覆写。
第三步,封装py程序,能够直接运行首先安装pyinstaller
直接在Python中pip install pyinstaller 就可以了
然后在cmd中跳转到你的py文件所在的文件夹
写入pyinstaller -F xxxx.py
就会在这个文件夹中再生成一个dist文件夹,里面就是已经封装好的exe程序,以后直接点击exe就可以直接批量加水印啦。
其他注意事项- 原始文件名中不能有空格,不然FFmpeg会找不到
- 提前确定好原始文件和生成文件所在的文件夹,并且要创建好
from fileinput import filename
import os
originpath = 'D:\小大熊猫'
vdname = "小大熊猫"
originnamepath = []
for root, dirs, files in os.walk(originpath):
for name in files:
if vdname in name:
originnamepath.append(os.path.join(root,name))
for i in originnamepath:
staus = os.popen ('ffmpeg -hide_banner -i ' + i + ' -vf "drawtext=fontsize=50:fontfile=C\:/Windows/Fonts/msyh.ttc:x=W-tw-50:y=H-abs(sin(t/12*PI)*200):fontcolor=white:alpha=0.4:text=小大熊猫"' + ' -b:v 15000k -r 25 D:\小大熊猫\logo-' + os.path.basename(i) + ' -y')
至此,所有的代码就写完啦,虽然我写了一周,走了很多很多的弯路……希望我能有5分钟写完这种代码的一天。其实这个program中也有很多遗憾,比如说不能在使用过程中更改文件夹所在路径,希望下次能写的更好吧!
参考文章- FFmpeg使用drawtext功能给视频文件添加中文字幕后,中文字幕显示乱码_cuijiecheng2018的博客-CSDN博客_中文字幕乱码
- [FFMPEG]2.命令使用:文字水印叠加参数_俗科技的博客-CSDN博客
- FFmpeg-Python 视频添加中文字体无法识别?_鹅毛在路上了的博客-CSDN博客
- FFMPEG添加文字中文显示乱码的问题_牧羊女说的博客-CSDN博客_ffmpeg中文乱码
- 《ffmpeg basics》中文版 – 10.在视频上添加文本_H&A的博客-CSDN博客
- ffmpeg 添加视频加文字水印–drawtext 滤镜详解_王二の黄金时代的博客-CSDN博客_ffmpeg 文字水印
- 《ffmpeg basics》中文版 – 13.数学函数_H&A的博客-CSDN博客
- ffmpeg Documentation



