首页 > 其他分享 >【ffmpeg】使用 FFmpeg 在一个视频文件上添加一个循环的 GIF 水印

【ffmpeg】使用 FFmpeg 在一个视频文件上添加一个循环的 GIF 水印

时间:2023-11-15 14:58:00浏览次数:35  
标签:10 FFmpeg 1080 水印 GIF mp4 视频文件


这段代码使用 FFmpeg 在一个视频文件 (1.mp4) 上添加一个循环的 GIF 水印 (3.gif),并将输出保存为另一个视频文件 (output.mp4),(如果在使用时遇到问题,可能需要调整一些参数,例如帧率、水印的位置或大小,以满足特定的需求)。

 

【ffmpeg命令】

ffmpeg -i 1.mp4 -ignore_loop 0 -i 3.gif -filter_complex "[1:v]fps=10,scale=1080:1080,setsar=1[watermark];[0:v][watermark]overlay=(W-w)/2:(H-h)/2" -map 0:a -c:a copy -shortest output.mp4

 

下面是对命令的分析

  1. ffmpeg: 这是 FFmpeg 命令行工具的启动命令。

  2. -i 1.mp4: 指定输入文件 1.mp4,这是需要添加水印的视频文件。

  3. -ignore_loop 0: 告诉 FFmpeg 处理 GIF 文件 (3.gif) 的循环信息。

  4. -i 3.gif: 指定第二个输入文件 3.gif,这是要作为水印添加到视频上的 GIF 文件。

  5. -filter_complex: 指定复杂的滤镜图。这里的滤镜主要有两个部分。

    • [1:v]fps=10,scale=1080:1080,setsar=1[watermark]: 处理水印 GIF。fps=10 设置 GIF 的帧率为每秒 10 帧,scale=1080:1080 调整水印 GIF 的大小,setsar=1 保持纵横比。

    • [0:v][watermark]overlay=(W-w)/2:(H-h)/2: 将水印叠加在视频上。(W-w)/2:(H-h)/2 将水印放置在视频中央。

  6. -map 0:a: 映射输入视频文件 (1.mp4) 的音频流。

  7. -c:a copy: 复制音频流,以保持原音频。

  8. -shortest: 在输出时指定最短的时长,以使输出视频与输入视频时长相同。

  9. output.mp4: 指定输出文件的名称,这是包含水印的视频文件。

 

【循环效果的特别说明】

-ignore_loop 0 的存在是为了告诉 FFmpeg 不要忽略 GIF 文件中的循环信息。同时,通过设置 fps=10 滤镜,你在添加水印的时候实现了循环的效果,即以每秒 10 帧的速度播放 GIF。

这样的组合确保了 GIF 在添加为水印时会按照设定的帧率循环播放,而不仅仅是播放一次。

最后使用-shortest:将会以两个流中时长较短的为准,确保输出时长与原视频相同,不然视频也会一直循环下去

 

标签:10,FFmpeg,1080,水印,GIF,mp4,视频文件
From: https://www.cnblogs.com/lanse1993/p/17833845.html

相关文章

  • JSON.stringify
    当使用JSON.stringify函数时,第二个参数是一个数组或一个函数,用于控制序列化过程中对象的属性。第三个参数是一个用于控制缩进的数字或字符串,用于美化输出的可选参数。让我们通过一个例子来说明:假设我们有以下JavaScript对象:constperson={name:'John',age:30,a......
  • 相机突然断电,保存的DAT视频文件如何打开
    3-6本文主要解决因相机突然断电导致拍摄的视频文件打不开的问题。在平常使用相机拍摄视频,比如使用佳能相机拍摄视频的时候,如果电池突然断电,就非常有可能会导致视频没来得及保存而损坏的情况,比如会产生下图中的这种DAT文件这个DAT文件就是相机临时保存的数据没来得及处理为视频文件......
  • Windows10+VSCode+cmake+opencv+ffmpeg+sdl2环境配置
    一、概述在Windows10上配置一个C++开发环境:工具:VSCode编译器:Mingw64(使用gcc进行编译)构建工具:CMake第三方库:集成OpenCV、FFmpeg、SDL2二、操作步骤1.安装mingw64并配置bin目录到环境变量2.下载VSCode并安装3.安装CMake并......
  • ffmpeg常用的几个命令
    ffmpeg-ss00:08:20-t00:10:02-iVideo_20230406112629898.avi-vcodeccopy-acodeccopyoutput.avi假设您要提取视频的一部分——比如从第10秒到第20秒。您需要做的第一件事是告诉FFmpeg搜索到第10秒,对吗?这是使用FFmpeg命令行中的 -ss 参数实现的,语法为–./......
  • ffmpeg中的时间戳
    参考:https://zhuanlan.zhihu.com/p/4683463961、基本概念ffmpeg中提及时间戳时,一定要明确它所对应的时基(time_base)。为精确描述该其数值,使用以下结构体来描述这一有理数概念。typedefstructAVRational{intnum;///<numeratorintden;///<denominator}AVRation......
  • 【ffmpeg】将视频转换为9:16的竖屏,多出的两边黑色填充
      【命令】ffmpeg-i1.mp4-vf"scale=1080:ih*1080/iw,pad=iw:iw*16/9:(ow-iw)/2:(oh-ih)/2"4.mp4【参数说明】scale=1080:ih*1080:将视频的宽度设置为1080,高度等比缩放pad=iw:iw*16/9:将视频的高度扩展,多余部分用黑色填充(ow-iw)/2:(oh-ih)/2:将视频在水平和垂......
  • 看我一行代码起飞,Glide加载gif优化实践
    前言最近项目中有使用到gif动画,加上本身已经引入了Glide(支持gif)库,所以便用Glide来加载了;但在使用过程中还是遇到了不少困难,在此记录下,希望可以给遇到类似问题的你一些思考和建议。一、Glide加载gif1.在项目中添加依赖dependencies{compile'com.github.bumptech.glide:glide:4......
  • centos7 安装 ffmpeg踩坑后纪
    从网上看了一篇在LINUX上安装FFMPEG作为流媒体服务器的文章后,不知深浅的照着教程来学,一个坑接一个坑。1、我看的教程原文,写的非常好,;https://www.jianshu.com/p/b1680d3ecd4f2、修路填坑之旅(小白的电脑什么都没有装); 首先,先要安装gcc,再要安装x264,还要装yasm  错误1,......
  • MP4视频文件损坏怎么修复?
    3-2作为摄影师,或者在平时有拍摄工作的事情的,比如搞婚庆、搞航拍什么的,有一定的概率会遇到损坏的视频文件,比如相机突然断电、无人机炸机等,有可能会导致保存的MP4文件损坏。这种文件使用播放器播放的话,会提示播放不了如果遇到这种情况,该咋办呢?下面有个方法,也许可以帮你修复损坏的视频......
  • PHP 合成gif 图片
    方法一:<?phpnamespaceApp\Services\Common;//namespacegifCreator;/***CreateananimatedGIFfrommultipleimages*/classGifcreator{/***@varstringThegifstringsource(old:this->GIF)*/private$gif;/**......