【修订中】ffmpeg 知识点

news/2024/10/16 15:59:11 标签: 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

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

http://www.niftyadmin.cn/n/5708182.html

相关文章

【玩转 JS 函数式编程_014】4.1 JavaScript 纯函数的相关概念(下):纯函数的优势

文章目录 4.1 纯函数4.1.1. 引用透明 Referential transparency4.1.2. JS 函数中的副作用 Side effects4.1.3. 纯函数的优势 Advantages of pure functions ✔️1 执行顺序 Order of execution2 函数记忆 Memoization3 自带文档描述 Self-documentation4 利于测试 Testing (接上…

不用搭建服务?MemFire Cloud让开发更简单

不用搭建服务?MemFire Cloud让开发更简单 在当今的开发世界里,想要开发一个功能齐全的应用,往往意味着需要搭建复杂的后端、开发API接口、处理认证授权、管理数据库……这些琐碎的工作让很多开发者头疼不已,尤其是独立开发者或者…

关于使用conda和pip二者安装包

想安装另外的不在Anaconda中的Python包: 方式1:conda install package_name 方式2:pip install package_name 想升级另外的不在Anaconda中的Python包: conda update package_name pip install --upgrade package_name 注意&am…

《15分钟轻松学Go》教程目录

在AI快速发展的时代,学习Go语言依然很有用。Go语言擅长处理高并发任务,也就是说可以同时处理很多请求,这对于需要快速响应的AI服务非常重要。另外,Go适合用来处理和传输大量数据,非常适合机器学习模型的数据预处理。 …

typescript 中的可选链、非空断言操作符和空值合并操作符

在 TypeScript 中,有几个操作符在处理可能为 null 或 undefined 的值时非常有用,它们分别是可选链操作符(Optional Chaining Operator)、非空断言操作符(Non-null Assertion Operator)和空值合并操作符&…

记录一次局域网内文件共享

#局域网内文件共享 局域网内文件共享 一.背景介绍 需求:在安全需求背景下,实现局域网内文件访问与修改 (即:禁止wx,qq,云server等传输) 作者的实验条件: win11主机,win10虚拟机 二.实验过程…

Docker 拉取镜像时配置可用镜像源(包含国内可用镜像源)

文章目录 写在前面一、Docker 官方源二、更换Docker 国内可用镜像源 (推荐使用)参考链接 写在前面 自己的测试环境: Ubuntu20.04,docker-27.3.1 一、Docker 官方源 打开 /etc/docker/daemon.json文件: sudo gedit …

深入理解Redis锁与Backoff重试机制在Go中的实现

文章目录 流程图Redis锁的深入实现Backoff重试策略的深入探讨结合Redis锁与Backoff策略的高级应用具体实现结论 在构建分布式系统时,确保数据的一致性和操作的原子性是至关重要的。Redis锁作为一种高效且广泛使用的分布式锁机制,能够帮助我们在多进程或分…