当前位置: 首页 > news >正文

【修订中】ffmpeg 知识点

一、两种安装方式

static FFmpeg binaries for macOS 64-bit Intel

brew install ffmpeg   时间有点长   需要挂上代理

二、ffmpeg 使用这个工具去除水印以后原来水印的那个点就模糊了如何解决这个问题呢

使用 FFmpeg 的delogo过滤器去除水印时,通常会导致水印所在的区域变得模糊或像素化。为了解决这个问题,您可以根据水印的复杂程度及其周围的内容选择几种方案。以下是一些改善结果的方法:

1.模糊水印周围的较大区域

您可以结合使用滤镜delogo和模糊滤镜,将水印区域与周围环境融合,使其不那么显眼。操作方法如下:

ffmpeg -i input.mp4 -vf "delogo=x=53:y=50:w=294:h=124, boxblur=luma_radius=2:luma_power=1" -c:a copy output.mp4
  • delogo去除水印。
  • boxblur对水印区域应用模糊效果,有助于将边缘与周围的视频融合。

您可以调整luma_radiusluma_power值来控制模糊的强度。

2.用视频的另一部分覆盖水印

另一种方法是用视频的另一部分覆盖水印区域(如果周围区域合适)。您可以使用 FFmpegcropoverlay过滤器来实现这一点。

例子:

ffmpeg -i input.mp4 -filter_complex "[0:v]crop=w=294:h=124:x=400:y=50[overlay];[0:v][overlay]overlay=x=53:y=50" -c:a copy output.mp4

在此命令中:

  • crop从视频中取出一个干净的区域(在这个例子中,在位置400:50),并且
  • overlay将裁剪部分放置在水印位置上(53:50)。

您需要选择视频中在颜色和纹理方面与水印区域紧密匹配的部分,以实现平滑的混合。

3.使用图像补丁覆盖水印

如果周围的视频使得该区域难以平滑融合,您可以用整齐覆盖该区域的图像补丁替换水印。以下是使用 FFmpeg 将图像叠加到视频上的方法:

ffmpeg -i input.mp4 -i patch.png -filter_complex "overlay=x=53:y=50" -c:a copy output.mp4

在此命令中:

  • patch.png
  • overlay过滤器

当您使用delogo筛选

1.用相邻内容替换水印区域delogo选项)

您可以微调delogo滤波器参数

  • show=1:帮助
  • band
  • t

示例命令

ffmpeg -i input.mp4 -vf "delogo=x=53:y=50:w=294:h=124:band=5:show=0" -c:a copy output.mp4

在此示例中,band=5添加band价值

2. **使用使用inpaintfillborders过滤器

inpaint过滤器是delogo

使用方法如下inpaint减少

ffmpeg -i input.mp4 -vf "delogo=x=53:y=50:w=294:h=124, inpaint=x=53:y=50:w=294:h=124" -c:a copy output.mp4

这将尝试修复水印区域,并用相邻像素填充

或者,fillborders也可以帮助

ffmpeg -i input.mp4 -vf "delogo=x=53:y=50:w=294:h=124, fillborders=left=10:right=10:top=10:bottom=10" -c:a copy output.mp4

这将用来自以下像素填充已删除水印周围的边框:

3.用徽标或补丁覆盖

如果 delogo 或 inpaint 选项不能产生令人满意的结果,另一种常见的解决方案是在水印所在的区域上叠加另一个徽标或自定义补丁。

ffmpeg -i input.mp4 -i logo.png -filter_complex "[0:v][1:v] overlay=53:50" -c:a copy output.mp4

在此示例中,新徽标 ( logo.png)53:50

4.手动编辑

为了获得最佳效果,尤其是当水印覆盖复杂背景时,可能需要使用专业视频编辑工具(例如 Adob​​e After Effects 或 DaVinci Resolve)进行手动编辑。这些工具提供内容感知填充、逐帧校正以及无缝移除的更高级选项

这些方法应该有助于改善去除水印后的视觉效果。最佳选择取决于视频内容和视频的复杂程度

ffmpeg -i Hya5X5.mp4 -filter_complex "[0:v]crop=w=294:h=124:x=400:y=50[覆盖];[0:v][覆盖]覆盖=x=53:y =50" -c:a copy output.mp4 目前使用这条命令 如何将取水印旁边的色彩 把水印覆盖了呢 这里面的参数是什么意思呢 详细解释一下那个参数

您使用的命令在filter_complex链中应用了两个过滤器,以使用 FFmpeg 处理水印移除。让我们分解命令的每个部分并解释参数,以及如何修改它以使用水印旁边的颜色来覆盖它的建议。

命令分解:

ffmpeg -i Hya5X5.mp4 -filter_complex "[0:v]crop=w=294:h=124:x=400:y=50[overlay];[0:v][overlay]overlay=x=53:y=50" -c:a copy output.mp4

参数详解:

  1. -i Hya5X5.mp4:指定输入视频文件(Hya5X5.mp4)。

  2. -filter_complex:此选项对视频应用复杂的过滤操作,允许按顺序应用多个过滤器。在这种情况下,两个过滤器会链接在一起。

  3. [0:v]crop=w=294:h=124:x=400:y=50[overlay]

    • crop:此过滤器根据您指定的尺寸和位置提取视频的一部分。
      • w=294:裁剪区域的宽度(以像素为单位)为294。
      • h=124:裁剪区域的高度(以像素为单位)为124。
      • x=400:裁剪区域左上角的横坐标为400(左侧的水平位置)。
      • y=50:裁剪区域左上角的y坐标为50(距离顶部的垂直位置)。
    • [overlay]:这是来自过滤器的输出流的名称crop,它将在下一个过滤器中使用。
  4. [0:v][overlay]overlay=x=53:y=50

    • overlay:此滤镜将裁剪的部分 ( [overlay]) 叠加在原始视频 ( [0:v]) 的顶部。
      • x=53:覆盖层(裁剪部分)在视频上的 x 坐标(水平位置)。
      • y=50:放置覆盖层的 y 坐标(垂直位置)。
  5. -c:a copy:这将复制音频流而不对其进行重新编码。

  6. output.mp4:应用过滤器后的输出文件的名称。

此命令的作用:

  1. 该命令首先从视频中裁剪出一个 294x124 的区域,从位置(400, 50)(水平方向距左侧 400 像素,垂直方向距顶部 50 像素)开始。
  2. 然后,它将裁剪的部分叠加在原始视频的位置上(53, 50),有效地使用部分视频来覆盖水印区域。

修改命令以使用邻近的颜色覆盖水印:

该命令当前的结构方式是,它会从中裁剪出一个区域(400, 50)并将其覆盖到 上(53, 50)。如果您想使用水印旁边的颜色或部分覆盖水印,则需要将裁剪区域调整到包含要用于覆盖水印的颜色或图案的位置。

修改裁剪的建议:

  1. 调整过滤器xycrop

    • 寻找水印附近具有相似颜色或图案的区域以便平滑融合。

    • 例如,如果您想取出右侧水印旁边的部分:

      修改crop如下部分:

      [0:v]crop=w=294:h=124:x=53+294:y=50[overlay]
      

      这会将裁剪区域移至水印的右侧。

  2. 调整overlay位置(xy

    • 如果需要调整覆盖层的位置,可以修改滤镜的x=53y=50overlay以匹配水印位置。
  3. 使用较小或较大的裁剪区域

    • 如果水印较小或较大,您可以调整的w(宽度)和h(高度)crop以从周围区域获取更多或更少的像素,以更好地匹配水印大小。

示例(将裁剪区域移至水印右侧):

ffmpeg -i Hya5X5.mp4 -filter_complex "[0:v]crop=w=294:h=124:x=347:y=50[overlay];[0:v][overlay]overlay=x=53:y=50" -c:a copy output.mp4

在此示例中:

  • 我将裁剪区域移到了水印的右侧 ( x=347),因此它会从该区域获取像素来覆盖水印(53, 50)

替代方案:模糊水印区域

如果您只是想模糊水印而不是用视频的其他部分覆盖它,那么可以使用boxblur过滤器代替cropoverlay

ffmpeg -i Hya5X5.mp4 -vf "boxblur=luma_radius=10:luma_power=2" -c:a copy output.mp4

这将使整个视频变得模糊。要仅模糊水印区域,您可以将其与以下方法结合使用crop

ffmpeg -i Hya5X5.mp4 -filter_complex "[0:v]crop=w=294:h=124:x=53:y=50,boxblur=luma_radius=10:luma_power=2[blurred];[0:v][blurred]overlay=x=53:y=50" -c:a copy output.mp4

此命令将专门模糊水印区域,而不是覆盖视频的其他部分。

这些方法应该能让您更好地控制水印的隐藏方式或与视频的融合方式。调整裁剪和叠加坐标是使用附近区域覆盖水印的关键。

ffmpeg -i Hya5X5.mp4 -filter_complex "[0:v]crop=w=294:h=124:x=400:y=50[覆盖];[0:v][覆盖]覆盖=x=53:y =50" -c:a copy output.mp4 目前使用这条命令 如何将取水印旁边的色彩 把水印覆盖了呢 这里面的参数是什么意思呢 详细解释一下那个参数

让我们逐步了解您的 FFmpeg 命令并解释每个部分的含义,以及如何修改参数以实现用附近颜色覆盖水印的目标。

命令分解:

ffmpeg -i Hya5X5.mp4 -filter_complex "[0:v]crop=w=294:h=124:x=400:y=50[overlay];[0:v][overlay]overlay=x=53:y=50" -c:a copy output.mp4

各部分解释:

  1. -i Hya5X5.mp4

    • 这指定了输入视频文件(Hya5X5.mp4)。
  2. -filter_complex

    • 此选项允许您在一个序列中应用多个视频滤镜,这些滤镜称为“复杂滤镜”。在您的例子中,它应用了两个滤镜:cropoverlay
  3. [0:v]crop=w=294:h=124:x=400:y=50[overlay]

    • crop:此过滤器从视频中提取一个矩形区域。
      • w=294:裁剪区域的宽度(以像素为单位)为294。
      • h=124:裁剪区域的高度(以像素为单位)为124。
      • x=400:这是裁剪区域左上角的 x 坐标(水平位置,从框架左侧开始)。
      • y=50:这是裁剪区域左上角的 y 坐标(垂直位置,从框架顶部开始)。
    • [overlay]:这是将传递给下一个过滤器(覆盖)的裁剪视频流的命名输出。您可以将其命名为任何名称;在本例中,它是overlay
  4. [0:v][overlay]overlay=x=53:y=50

    • overlay:此滤镜将裁剪后的视频(由裁剪滤镜创建)覆盖在原始视频的顶部([0:v])。
      • x=53:这是裁剪区域在原始视频中的横坐标(水印所在的水平位置)。
      • y=50:这是裁剪区域在原始视频中的 y 坐标(水印所在的垂直位置)。
  5. -c:a copy

    • 这将从输入视频中复制音频流,不做任何修改

相关文章:

【修订中】ffmpeg 知识点

一、两种安装方式 static FFmpeg binaries for macOS 64-bit Intel brew install ffmpeg 时间有点长 需要挂上代理 二、ffmpeg 使用这个工具去除水印以后原来水印的那个点就模糊了如何解决这个问题呢 使用 FFmpeg 的delogo过滤器去除水印时,通常会导致水印所…...

Rust初踩坑

一、下载 到官网https://www.rust-lang.org/zh-CN/tools/install下载你需要的版本 二、安装 执行rustup-init 文件,选择1 按提示直到安装完成 可以通过以下命令测试: rustc -V # 注意的大写的 V cargo -V # 注意的大写的 V三、在VScode中…...

element-ui 的el-calendar日历组件样式修改

<div style"width:100%;height:calc(100% - 35px);margin-top: 5px;"><el-calendar v-model"calendar" style"height: 100%;"></el-calendar></div> css部分 <style>/* 去除底色 */ /deep/ .el-calendar {backg…...

LinuxDebian系统安装nginx

1、安装了必要的开发工具和库文件 sudo apt update sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev2、下载Nginx源码 cd /home/kylin wget http://nginx.org/download/nginx-1.20.1.tar.gz tar -zxvf nginx-1.26.2.tar.gz cd nginx-1…...

Redis 数据类型Streams

目录 1 基本特性 2 主要操作命令 2.1 XADD key ID field value [field value ...] 2.2 XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] 2.3 XRANGE key start end [COUNT count] 2.4 XREVRANGE key end start [COUNT count] 2.5 XGROUP …...

基智科技CEO张文战:探索火山引擎数据飞轮模式下的大模型应用新机会

9月下旬&#xff0c;火山引擎数据飞轮研讨会在北京举办&#xff0c;北京基智科技有限公司&#xff08;以下简称“基智科技”&#xff09;CEO张文战作为积极探索大模型应用领域的企业代表&#xff0c;围绕“数据飞轮如何转进企业业务流”展开主题分享&#xff0c;并介绍基智科技…...

【AUTOSAR标准文档】AotuSar结构横向分层详解(RTE、BSW)

Top view The AUTOSAR Architecture distinguishes on the highest abstraction level between three software layers: Application, Runtime Environment and Basic Software which run on a Microcontroller. 译文&#xff1a;AUTOSAR架构在最高抽象层次上将软件分为三层&…...

新 Chrome 插件可检测 AI 伪造声音;Canary Speech 推出用于临床对话的语音分析技术丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…...

1. 路由定义

1. 通过配置文件形式 配置方式与laravel的配置方式相似 <?php use Hyperf\HttpServer\Router\Router;Router::get(/hello-hyperf, function () {return Hello Hyperf.; });// 设置一个 GET 请求的路由&#xff0c;绑定访问地址 /get 到 App\Controller\IndexController 的 …...

我们可以用微服务创建状态机吗?

大家好&#xff0c;我是锋哥。今天分享关于【我们可以用微服务创建状态机吗&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 我们可以用微服务创建状态机吗&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 是的&#xff0c;微服务架构可…...

邦芒贴士:职场新人需远离的7种坏习惯

咱们每一个人都会有这样那样的毛病&#xff0c;而试用期就是试毛病的大小。对于职场新人来说&#xff0c;第一份工作很容易暴露这样那样的职业毛病。职业习惯直接决定了我们以后的职业发展&#xff0c;职业能力。对于职场新人来说&#xff0c;在试用期内&#xff0c;一些职场坏…...

面向医院的统一支付平台产品经验分享

我们面向医院的统一支付平台其实应该属于四方平台的范畴,依托于微信、支付宝等第三方支付平台和银联、银行等渠道生存。 二、医院常见系统说明: 先普及一下医院的系统情况: HIS(医院信息系统Hospital Information System):医院内的核心系统,为医院所属各部门提供病人诊…...

http作业

配置nginx服务通过ip访问多网站 1、前提配置 2、安装nginx服务 3、配置多IP 在linux主机上查看ip地址 4、定义nginx文件 5、在主机创建文件&#xff0c;重启nginx服务 6、测试...

AlDente Pro for Mac电脑 充电限制保护工具 安装教程【简单,轻松上手】

Mac分享吧 文章目录 AlDente Pro for Mac 充电限制保护工具 安装完成&#xff0c;软件打开效果一、AlDente Pro for Mac 充电限制保护工具 Mac电脑版——v1.28.41️⃣&#xff1a;下载软件2️⃣&#xff1a;安装软件&#xff0c;将安装包从左侧拖入右侧文件夹中&#xff0c;等…...

C语言数据结构之算法复杂度

目录 一、数据结构是什么 二、算法是什么 三、算法的效率 3.1 复杂度的概念 四、时间复杂度 4.1 大O渐进表示法 4.2 算法题分析 五、空间复杂度 5.1 复杂度对比 5.2 算法题题分析 正文开始 一、数据结构是什么 每个计算机专业的同学在大学都会接触到一门计算机必修课《数…...

HDU RSA

翻译成中文后&#xff1a; 思路&#xff1a;由题易得&#xff0c;d * e y * f ( n ) 1 ,且gcd ( e , f ( n ) ) 1,所以用扩展欧几里得求出 d &#xff0c;但要保证 d 是非负的&#xff0c;最有用快速幂求出每个字符即可。 #include<bits/stdc.h> using namespace std;…...

数据仓库建设 : 主题域简介

在数据仓库建设中&#xff0c;主题域是数据模型的一个重要概念&#xff0c;它帮助构建逻辑清晰、层次分明的数据结构。主题域的设计基于企业的业务结构&#xff0c;将业务中的关键部分提炼出来&#xff0c;划分为若干个主题域。每个主题域对应一个特定的业务领域&#xff0c;便…...

开源表单生成器OpnForm

什么是 OpnForm &#xff1f; OpnForm 是一个开源的表单构建工具&#xff0c;旨在简化创建自定义表单的过程&#xff0c;特别适合无编码知识的用户。它通过人工智能优化表单创建流程&#xff0c;支持多种用途&#xff0c;如联系人表单、调查表等。OpnForm 提供了一个直观的拖放…...

Zookeeper面试整理-Zookeeper的基础概念

Zookeeper的基础概念是理解其作为分布式协调服务的核心要素。以下是一些关键的基础概念: 1. Zookeeper是什么? Zookeeper 是一个开源的分布式协调服务,用于分布式应用中的配置管理、命名服务、分布式锁、集群管理等任务。它提供了一组简单的原语,帮助开发人员构建健壮的分布…...

验证archive_command配置是否正确

要验证 archive_command 配置是否正确&#xff0c;你可以按照以下步骤进行&#xff1a; ‌检查配置文件‌&#xff1a; 确保 postgresql.conf&#xff08;或你的 PostgreSQL 实例使用的任何自定义配置文件&#xff09;中的 archive_command 已经设置为你想要的命令。 ‌重启 …...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...