如何去掉视频上的水印文字,如何去掉图片上的水印文字?
你是否有下载了一些视频想使用,却发现视频里被打了水印的问题呢?
这时该怎么办,找原始视频,还是放弃?
对于这种烦恼也困扰着我,然后网上一直搜索去水印的工具,但是想要白嫖,几乎是不可能的,充钱买会员才是真实的!
对于让我掏钱买会员的行径,坚决抵制,用不了别人的,那自己是否能实现呢?
答案是肯定的!
互联网时代,只要你能想到的,GitHub上基本都能找到答案, 然后在此基础上封装一番,变成适合自己使用习惯的工具。
今天找到的工具是ffmpeg, 这个工具支持各个平台,下载地址:http://ffmpeg.org/download.html#build;
我是贫民,只有windows的机器,那就以windows系统演示吧!
windows系统下载地址:https://www.gyan.dev/ffmpeg/builds/
然后解压添加bin目录到环境变量path中,打开cmd执行一把ffmpeg -h, 不报错则说明可以愉快的使用了。
path添加环境变量
ffmpeg测试
ffmpeg功能强大,视频、音频、图片、GIF都可以进行操作转换,不管你有什么需求。
首先看看ffmpeg的基本功能:
查看视频基本信息
ffmpeg -i ss.mp4
查看视频分辨率
ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 ss.mp4
加速/减速播放视频
# 加速一倍 setpts的取值范围[0.25, 2] ffmpeg -i input.mov -filter:v "setpts=0.5*PTS" output.mov # 减速一倍 ffmpeg -i input.mov -filter:v "setpts=2.0*PTS" output.mov
视频转换保持原质量
ffmpeg -i input.webm -qscale 0 output.mp4
视频静音与音频变速
# -an表示静音 ffmpeg -i input.mov -an mute-output.mov # 通常音频变速是跟随着视频进行的 #atempo=2.0表示二倍变速,取值范围[0.5-2],如果想要表达四倍则为atempo=2.0,atempo=2.0 ffmpeg -i ss.mp4 -r 60 -filter_complex "[0:v]setpts=0.25*PTS[v];[0:a]atempo=2.0,atempo=2.0[a]" -map "[v]" -map "[a]" ss4.mp4
设置视频高宽比
# 设置视频高宽比 ffmpeg -i input.mp4 -aspect 16:9 output.mp4 # 设置视频尺寸 ffmpeg -i big.mov -vf scale=360:-1 small.mov
视频去除水印
# x和y是以左上角为原点的坐标,w和h是水印的矩形区域的宽度和高度 ffmpeg -i ss.mp4 -vf "delogo=x=80:y=70:w=220:h=220" -c:a copy a.mp4
视频中提取音频
ffmpeg -i ss.mp4 -b:a 128k ss.mp3 # 提取片段 ffmpeg -i aa.mp4 -ss 00:00:11.270 -to 00:00:14.550 -b:a 128k ss.mp3
视频中提取字幕
# 从视频中提取srt字幕 ffmpeg -i ss.mp4 -map 0:s:0 ss.srt
字幕转换
从srt转换出ass字幕文件ffmpeg -i subtitle.srt subtitle.ass
python的ffmpeg库:ffmpeg-python
安装方式:pip install ffmpeg-python
然后可以直接使用已经封装好的方法进行视频操作。
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Date: 2023/3/16 19:42 @Author: Wally @Descript: 通过ffmpeg去除视频水印import timeimport sysimport osimport subprocessfrom typing import Tupleimport ffmpegdef set_up(): # 输出目录检查,ffmpeg环境变量增加 global output_path # current_path=os.path.join(os.path.dirname(os.path.abspath(__file__))) # pyinstaller打包有坑 current_path=os.path.dirname(os.path.realpath(sys.executable)) # 获取真实路径,pyinstaller打包用, output_path=os.path.join(current_path, "output") bin_path=os.path.join(current_path, 'bin') print(f"output_path: {output_path}") if not os.path.exists(output_path): os.mkdir(output_path) print(f"添加path环境变量:{bin_path}") sys.path.insert(0, bin_path) print("初始化完成!") return output_pathdef clear_water_mark( in_file: str, positions: Tuple[int], fps: int=30, setpts: float=1, mute_flag: bool=False): """ 视频去除水印 :param positions: 坐标, x,y, w,h 分别为视频画面去除水印的开始位置坐标,去除的长度和高度 :param fps: 视频帧数 快速播放时,需要增加帧数 :param in_file: 视频文件地址 :param setpts: 播放倍数 :param mute_flag: 转换时是否静音,默认不静音 :return: """ set_up() try: # out_path, out_file=in_file.rsplit("\\", 1) out_file=in_file.rsplit("\\", 1)[-1].rsplit("/", 1)[-1] out_file=f"out_{time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))}_" + out_file cmd=f'ffmpeg -i {in_file} -vf "delogo=x={positions[0]}:y={positions[1]}:w={positions[2]}:h={positions[3]}" -c:a copy {os.path.join(output_path, out_file)}' res=subprocess.call(cmd, shell=True) if res !=0: print(f"文件:{out_file}去除水印失败.") return False print(f"文件:{out_file}去除水印已完成!") if setpts !=1 or mute_flag: print(f"视频文件需要进行变速或静音处理...") return change_speed_play(os.path.join(output_path, out_file), setpts=setpts, mute_flag=mute_flag, fps=fps) else: print("视频操作完毕!") return True except Exception as e: print(f"参数错误: {str(e)}") return Falsedef main(): print("请输入要转换的视频绝对路径:") f=input() print("请输入去除水印的起始点与长度和宽度[x y w h], 例如0 0 200 200") positions=input() print("视频变速倍数,默认不变[1,1.25,1.5,1.75,2,4,0.875,0.75,0.5]:") speed=input() print("视频是否静音, 默认不静音[0:静音, 1:不静音]:") an=input() if '' in [f, positions]: print("视频路径和需要去除的水印坐标不能为空") return False pos=[int(t) for t in positions.split()] if len(pos) < 4: print("去除水印的坐标点和位置必须为4位整数") return False if not speed: speed=1 else: try: speed=float(speed) except: speed=1 if an.isdigit(): if int(an): an=False else: an=True else: print("是否静音输入错误, 默认为不静音") an=False clear_water_mark(f, tuple(pos), setpts=speed, mute_flag=an)
执行程序
去除水印前
去除水印后
代码完成后通过pyinstaller进行打包生成exe可执行文件,之后执行就不再依赖python环境和ffmpeg文件,从此以后,带水印的视频想用就用,真是妈妈再也不用担心我的水印视频了。
#头条创作挑战赛#
好了,这篇文章的内容营销圈就和大家分享到这里,如果大家对网络推广引流和网络创业项目感兴趣,可以添加微信:Sum8338 备注:营销圈引流学习,我拉你进直播课程学习群,每周135晚上都是有实战的推广引流技术和网络创业项目课程分享,当然是免费学!