栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

用FFmpeg快捷加文字水印

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用FFmpeg快捷加文字水印

Windows系统下利用FFmpeg快捷加文字水印

文章目录
  • 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就可以直接批量加水印啦。

其他注意事项
  1. 原始文件名中不能有空格,不然FFmpeg会找不到
  2. 提前确定好原始文件和生成文件所在的文件夹,并且要创建好
完整代码
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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/989592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号