【音视频处理】使用ffmpeg实现多个视频合成一个视频(按宫格视图)

先上结果

在这里插入图片描述

环境

硬件:通用PC
系统:Windows 测试有效
软件:ffmpeg

解决

0、命令

ffmpeg.exe -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 -filter_complex  "[0:v]scale=iw/2:ih/2,pad=2*iw:2*ih[a]; [1:v]scale=iw/2:ih/2[b]; [2:v]scale=iw/2:ih/2[c];  [3:v]scale=iw/2:ih/2[d];[a][b]overlay=w[x];[x][c]overlay=0:h[y];[y][d]overlay=w:h[v];[0:a][1:a][2:a][3:a]amix=inputs=4[a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac output.mp4

1、参数说明

  1. -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4:这些是输入文件的参数,指定了四个视频文件作为输入。为了简单我这里采用一个视频复制4份使用。
  2. -filter_complex:这个参数用来指定一个复杂的过滤器图,用于处理和组合视频和音频流。
    [0:v]scale=iw/2:ih/2,pad=2iw:2ih[a];:这个过滤器首先将第一个视频流([0:v])的大小缩小到原来的一半(scale=iw/2:ih/2),然后使用pad过滤器将视频画面扩大到原始宽度的两倍和原始高度的两倍,准备放置其他视频。结果标记为[a]。
    [1:v]scale=iw/2:ih/2[b]; [2:v]scale=iw/2:ih/2[c]; [3:v]scale=iw/2:ih/2[d];:这些过滤器将其他三个视频流的大小也缩小到原来的一半,并分别标记为[b]、[c]、[d]。
    [a][b]overlay=w[x];:这个过滤器将视频[b]覆盖到视频[a]上,位置为宽度w的位置,即右上角,结果标记为[x]。
    [x][c]overlay=0:h[y];:将视频[c]覆盖到[x]上,位置为高度h的位置,即左下角,结果标记为[y]。
    [y][d]overlay=w:h[v];:将视频[d]覆盖到[y]上,位置为宽度w和高度h的位置,即右下角,最终的视频流标记为[v]。
  3. [0:a][1:a][2:a][3:a]amix=inputs=4[a]:这个过滤器将四个视频的音频流混合成一个音频流。amix=inputs=4表示混合四个输入,结果标记为[a]。
  4. -map “[v]” -map “[a]”:这些参数指定了要从过滤器图中映射到输出文件的流。"[v]“是最终的视频流,”[a]"是混合后的音频流。
  5. -c:v libx264 -c:a aac:这些参数指定了视频和音频的编码器。视频使用libx264编码器,音频使用aac编码器。
  6. output.mp4:这是输出文件的名称。

OK!
至此,问题解决。欢迎留言交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/711245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GO学习记录

这里写目录标题 00 环境二级目录三级目录 00 环境 参考的&#xff1a;https://www.liwenzhou.com/posts/Go/install/ 编译运行&#xff1a; go mod init <项目名> // 在目录下创建项目 go mod init hello // 编译二级目录 三级目录

BioTech - 大分子药物设计 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/136302202 大分子药物设计领域主要包括3个方面&#xff0c;即大环类药物设计、蛋白质与多肽类药物设计、核酸药物设计等&#xff0c;具体如下&…

selenium控制控件出现StaleElementReferenceException

attempts0while attempts<2:try:ywbh_text self.getElement(self.driver, //*[id"board_data"]/tbody/tr[1]/td[2])ywbh_text.click()config.zscjhbgbz_ywbh ywbh_text.textprint("保存业务编号&#xff1a;"ywbh_text.text"到conf中 zscjhbgbz_…

DolphinScheduler——奇富科技的调度实践

目录 一、技术架构 二、业务挑战 2.1 调度任务量大 2.2 运维复杂 2.3 SLA要求高 三、调度优化实践 3.1 重复调度 3.2 漏调度 3.3 Worker服务卡死 3.4 任务重复运行 四、服务监控 4.1 方法耗时监控 4.2 任务调度链路监控 五、用户收益 原文大佬的这篇调度系统案例…

nginx使用详解--缓存

Nginx 是一个功能强大的 Web 服务器和反向代理服务器&#xff0c;它可以用于实现静态内容的缓存&#xff0c;缓存可以分为客户端缓存和服务端缓存。 客户端缓存 客户端缓存指的是浏览器缓存, 浏览器缓存是最快的缓存, 因为它直接从本地获取(但有可能需要发送一个协商缓存的请…

【XR806开发板试用】全网首发,对接腾讯云平台的血泪史

1.前面的话 在上次连夜肝出了华为云平台的帖子:https://aijishu.com/a/1060000000287434 之后,论坛里的反响平平,好评没有,点赞更无,抱着已完成任务成功白嫖一块板子的心态,把板子收在了盒子里,第二天,助手小姐姐跟我说为何不把腾讯云的做了,对于这个要求我其实是拒绝的,但是小…

鸿蒙开发之组件间方法传递(方法回调)

目前使用的方式有两种&#xff0c;一种是父子组件方法传递&#xff0c;一种是系统提供的emitter。 一、父子组件方法传递 1.1 使用场景 当我们父组件中有一个方法&#xff0c;需要子组件在修改完数据后回调父组件的方法时候。有点抽象&#xff1a;这样解释一下&#xff0c;父…

深度学习-Pytorch运算的基本数据类型

深度学习-Pytorch模型运算的基本数据类型 用pytorch构建模型&#xff0c;并训练模型&#xff0c;得到一个优化的模型&#xff0c;那么模型构造的数据类型怎样的&#xff1f; 数据分析 数据分析-Pandas如何转换产生新列 数据分析-Pandas如何统计数据概况 数据分析-Pandas如…

Three.js-04轨道控制器

1.导入 说明&#xff1a;相机围绕目标进行轨道运动。也就是可以通过鼠标拖拽进行移动视角。 import { OrbitControls } from three/addons/controls/OrbitControls.js; 2.使用 说明&#xff1a;构造controls对象&#xff0c;再调用update方法&#xff1b;为了使效果更为明显…

十二、Qt自定义Widget组件、静态库与动态库

一、自定义Widget组件 1、自定义Widget组件 使用步骤采用提升法&#xff08;promotion&#xff09;重新定义paintEvent事件 2、实现程序 &#xff08;1&#xff09;创建项目&#xff0c;基于QWidget &#xff08;2&#xff09;添加类&#xff0c;为Widget组件提升类 #inclu…

Spring Boot 集成 Quartz 实现定时任务

Spring Boot 集成 Quartz 实现定时任务 在Spring Boot应用中&#xff0c;我们经常需要执行一些定时任务&#xff0c;如每天发送报表、定时更新数据库等。虽然Spring Framework自带了一个简单的定时任务功能&#xff08;Scheduled&#xff09;&#xff0c;但在一些复杂场景下&a…

Vue3 在SCSS中使用v-bind

template 先创建一个通用的页面结构 <template><div class"v-bubble-bg"></div> </template>js 在JS中先对需要用的数据进行定义&#xff1a; 可以是参数&#xff0c;也可以是data <script setup>const props defineProps({bgCol…

cURL 命令中有$的问题

最近学会使用cURL来快速访问网络资源&#xff0c;确实很好用&#xff0c;但在使用过程中遇到一个奇怪的问题&#xff0c;多方查询也没有找到现成答案&#xff0c;最后经摸索终于解决&#xff0c;特记录如下。 我们一般访问网站使用Chrome浏览器获取的cURL命令大概是这个样子&am…

gpt批量原创文章生成器,不限制内容的生成器

在当今的数字化时代&#xff0c;内容创作是网站持续发展的重要组成部分。然而&#xff0c;对于拥有大量内容需求的网站来说&#xff0c;手动创作文章可能会耗费大量时间和精力。为了解决这一问题&#xff0c;许多GPT&#xff08;生成式预训练模型&#xff09;文章生成软件应运而…

【重温设计模式】外观模式及其Java示例

设计模式及外观模式介绍 在编程世界中&#xff0c;设计模式就如同自然界的法则&#xff0c;是一种反复出现在各种情况下的通用解决方案。设计模式可以分为创建型、结构型和行为型三大类&#xff0c;每一类都有其独特的应用场景和解决问题的方式。今天&#xff0c;我们要重点解…

【HbuilderX】 uniapp实现 android申请权限 和 退出app返回桌面

目录 android申请权限&#xff1a; 监听用户是否开启权限或关闭权限&#xff1a; 退出app返回桌面&#xff1a; android申请权限&#xff1a; 首先在 manifest.json 内添加你所需要用到权限 添加权限插件 permission.js 一次就好1/权限插件 - Gitee.comhttps://gitee.co…

数据库分库分表中间件选择

目前分库分表的中间件有三种设计思路&#xff0c;分别是&#xff1a; 采用分散式架构&#xff0c;适用于用Java开发的高性能轻量级OLTP应用程序&#xff0c;以Sharding-JDBC为代表。采用中间层Proxy架构&#xff0c;提供了静态输入和所有语言支持&#xff0c;适用于OLAP应用程…

MATLAB环境下基于小波和滤波器组的音频信号处理

音频分类研究的重点&#xff0c;一方面在于音频特征的提取和选择&#xff0c;通常来说数据集和特征集在分类系统中有着极为重要的作用&#xff0c;离开了对数据集的处理、对特征集中特征的提取和选择&#xff0c;分类结果必将产生巨大误差。对于提高音频分类系统的分类准确度和…

vulnhub-----Hackademic靶机

文章目录 1.C段扫描2.端口扫描3.服务扫描4.web分析5.sql注入6.目录扫描7.写马php反弹shell木马 8.反弹shell9.内核提权 1.C段扫描 kali:192.168.9.27 靶机&#xff1a;192.168.9.25 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0,…

Docker容器(3)单容器管理

一、单容器 1.1概念简介 Docker三个重要概念: 仓库(Repository); 镜像(Image); 容器(Container). *Docker的三个重要概念是仓库(Repository)、镜像(Image)和容器(Container)**。具体如下&#xff1a; **镜像(Image)**&#xff1a;Docker镜像是创建容器的基础&#xff0c;它类似…