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

Java+ffmpeg 合并两个mp4文件

使用ffmpeg测试命令

ffmpeg 
-i "E:\Monitor\video_20240617_10.mp4" 
-i "E:\Monitor\video1_20240617_10.mp4" 
-filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" 
-map "[v]"
-map "[a]"
-c:v libx264 -c:a aac "E:\Monitor\video_20240617_10.mp4.mp4"

详解

这段FFmpeg命令是用来合并两个视频文件(包括它们的视频流和音频流)成一个新的视频文件。下面是对命令各部分的详细解释:

输入文件指定:

-i "E:\Monitor\video_20240617_10.mp4": 指定了第一个输入视频文件的路径。

-i "E:\Monitor\video1_20240617_10.mp4": 指定了第二个输入视频文件的路径。

Filter Complex: -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]": 这是一个复杂的过滤器链,用于处理输入流。

[0:v] 和 [1:v] 分别表示第一个和第二个输入文件的视频流。

[0:a] 和 [1:a] 分别表示第一个和第二个输入文件的音频流。

concat=n=2:v=1:a=1 配置了concat过滤器,n=2表示有2个输入流被连接,v=1表示输出1个视频流,a=1表示输出1个音频流。

[v] 和 [a] 是输出流的标签,分别代表最终的视频流和音频流。

输出映射:

-map "[v]" 指定使用前面定义的视频输出流[v]。

-map "[a]" 指定使用前面定义的音频输出流[a]。

输出编码与格式:

-c:v libx264 指定视频编码器为libx264,这是一个广泛使用的H.264视频编码器。

-c:a aac 指定音频编码器为AAC,这是一种高质量的音频编码格式。

"E:\Monitor\video_20240617_10.mp4" 是输出文件的路径。

综上,此命令的作用是将两个MP4视频文件的视频和音频流合并成一个单一的MP4文件,使用H.264视频编码和AAC音频编码。

结果

合并成功自动关闭

Java测试代码

/*** 合并视频** @param mp4Output* @param tempFilePath*/public void mergeVideo(String mp4Output, String tempFilePath) {//原文件改名String tempFilePath1 = RenameFileExample(mp4Output);//修改视频1名称为临时文件名称1String mergeCommand = String.format("ffmpeg -i \"%s\" -i \"%s\" -filter_complex \"[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]\" -map \"[v]\" -map \"[a]\" -c:v libx264 -c:a aac \"%s\"",tempFilePath1, tempFilePath, mp4Output);AtomicReference<Process> process = null;executorService.submit(() -> {try {process.set(Runtime.getRuntime().exec(mergeCommand));//删除两个临时文件deleteFileExample(tempFilePath1);deleteFileExample(tempFilePath);} catch (IOException e) {e.printStackTrace();}});isTemp = false;}

流程

相关文章:

Java+ffmpeg 合并两个mp4文件

使用ffmpeg测试命令 ffmpeg -i "E:\Monitor\video_20240617_10.mp4" -i "E:\Monitor\video1_20240617_10.mp4" -filter_complex "[0:v][0:a][1:v][1:a]concatn2:v1:a1[v][a]" -map "[v]" -map "[a]" -c:v libx264 -c:a…...

汽车IVI中控开发入门及进阶(三十一):视频知识扫盲

有效的视频资源管理需要集成许多不同的底层技术,共同为用户提供给定应用程序的最佳体验。其中许多技术是从早期电视广播中使用的技术演变而来的。其他方法,如用于通过网络流式传输视频的压缩方法,相对较新且不断发展。 以下详细概述了与图形和视频处理和传输相关的一些基本…...

【后端】Java学习笔记(二周目-1)

环境 安装JDK8并配置环境变量 jvm核心类库jre jre开发工具jdk Java基础运行流程&#xff0c;代码从上到下&#xff0c;从左往右&#xff0c;只运行一次 桌面—>新建文件夹—>新建记事本—>打开编写代码 public class Hello{public static void main(String[] arg…...

PDF文档翻译软件哪个好?分享5款快速翻译的工具

世界各地的交流日益密切&#xff0c;文档翻译服务因此变得不可或缺。 无论是企业间的跨国商务合同&#xff0c;还是学术领域的专业研究论文&#xff0c;准确无误地将文档内容翻译成目标语言&#xff0c;对于保障信息的清晰传达和正确理解极为关键。 在这样的背景下&#xff0…...

哪些因素驱动新零售发展?新零售与传统零售、电子商务区别在哪?

零售业正经历着一场前所未有的变革&#xff0c;这场变革由多种因素驱动&#xff0c;涉及技术、消费习惯以及商业模式的全面升级。我们称之为”新零售”&#xff0c;它不仅仅是一个概念&#xff0c;更是零售业未来发展的方向。新零售的兴起&#xff0c;标志着零售行业正在迈向一…...

使用代理IP常见问题及解答

代理IP在互联网数据收集和业务开展中发挥着重要作用&#xff0c;它充当用户客户端和网站服务器之间的“屏障”&#xff0c;可以保护用户的真实IP地址&#xff0c;并允许用户通过不同的IP地址进行操作。然而&#xff0c;在使用代理IP的过程中&#xff0c;用户经常会遇到一些问题…...

重磅!鹅厂大牛带你30分钟玩转AI智能结对编程!

在大模型时代&#xff0c;人工智能技术的突破性进展正重塑着软件开发的面貌。AI的融入不仅优化了代码编写过程&#xff0c;更开启了智能编程的新纪元&#xff0c;为开发者带来了前所未有的工作效率和创新可能。AI结对编程不仅能够极大提升研发效率&#xff0c;还能通过智能分析…...

研究Redis源码的一些前期准备

一 背景 Redis数据结构讲完后&#xff0c;觉得还是有点不过瘾&#xff0c;想研究一下Redis的底层实现。找了一些相关资料&#xff0c;准备借鉴和学习其他各位大佬钻研Redis底层的方法和经验&#xff0c;掌握Redis实现的基本原理。 二 源码归类 网上有大佬已经总结了…...

用PHP来调用API给自己定制一个“每日新闻”

头条新闻汇聚了互联网上的时事动态&#xff0c;提供最新新闻动态、网络热门话题和视频更新等&#xff0c;覆盖社会、政治、体育、经济、娱乐、科技等多个领域&#xff0c;并不断刷新内容。企业应用这一接口后&#xff0c;可以快速吸引更多的用户访问自己的平台。即使是非新闻类…...

AGI时代,程序员想学习大语言模型(LLM),应该从哪里开始?

程序员25岁做什么能够改变35岁被淘汰的命运&#xff1f;对于程序员的新一轮革命&#xff0c;我觉得人工智能大模型方向是你可以认真审视的一个方向&#xff0c;你可以选择通过它创业&#xff0c;也可以选择进入这个领域&#xff0c;它是一个更加开放的领域&#xff0c;也让程序…...

Vue在表单校验中trigger属性指定何时触发校验规则

Vue在表单校验中trigger属性指定何时触发校验规则 一、前言1.示例代码 一、前言 在表单校验中&#xff0c;trigger 属性用于指定何时触发校验规则。常见的触发方式包括 "change" 和 "blur". 它们的区别如下&#xff1a; trigger: "change": 触发…...

【多线程实例】

使用场景 拿到了一个商品的list,然后要循环list去获取每个商品的明细&#xff0c;由于调用api很依赖于网络&#xff0c;一个个执行速度慢&#xff0c;所以考虑使用线程去解决。 //根据机器id 获取 所有商品信息 public List<ProductResponse> productList(MachineConf…...

数据治理在数据提取中的角色:确保数据质量和安全

在数字化浪潮中&#xff0c;数据已成为企业运营和决策的核心驱动力。然而&#xff0c;随着数据量的快速增长和来源的多样化&#xff0c;如何确保所提取数据的质量和安全性成为企业面临的重大挑战。数据治理&#xff0c;作为一种系统的管理方法&#xff0c;在数据提取过程中扮演…...

Nuxt快速学习开发 - Nuxt3静态资源Assets

Nuxt 使用两个目录来处理样式表、字体或图像等资产。 public/目录内容按原样在服务器根目录中提供。 assets/目录包含您希望构建工具&#xff08;Vite 或 webpack&#xff09;处理的所有资产。 public/目录 public目录用作静态资产的公共服务器&#xff0c;可在您的应用程序定…...

为什么企业需要数据挖掘平台?哪个比较好呢?

什么是数据挖掘&#xff1f; 数据挖掘就是从大量的数据中去发现有用的信息&#xff0c;然后根据这些信息来辅助决策。听起来是不是跟传统的数据分析很像呢&#xff1f;实际上&#xff0c;数据挖掘就是智能化的数据分析&#xff0c;它们的目标都是一样的。但是&#xff0c…...

leetCode-hot100-链表专题

leetCode-hot100-链表专题 链表简介单链表单链表的使用例题206.反转链表19.删除链表的倒数第N个结点24.两两交换链表中的节点25.K个一组翻转链表 双向链表双向链表的使用 循环链表61.旋转链表141.环形链表142.环形链表Ⅱ LinkedListLinkedList的使用 链表简介 参考博客&#x…...

【ai】tx2-nx:配置tritonserver2.17.0-jetpack4.6 环境并运行例子

2.17.0 for jetpack 4.6运行需要 如果在jetson上构建Triton : Note: When building Triton on Jetson, you will require a newer version of cmake. We recommend using cmake 3.21.0. Below is a script to upgrade your cmake version to 3.21.0. You can use cmake 3.18.4…...

Spring和Spring Boot常用注解介绍及使用

Spring和Spring Boot框架通过丰富的注解集简化了Java开发&#xff0c;使得配置更加简洁且易于理解。 下面是一些常用的Spring和Spring Boot注解及其使用方式的简介&#xff1a; 目录 1. Component 2. Service 3. Repository 4. Controller 5. RestController 6. Autowire…...

【计算机毕业设计】211校园约拍微信小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…...

笨蛋学算法之LeetCodeHot100_1_两数之和(Java)

package com.lsy.leetcodehot100;public class _Hot1_两数之和 {//自写方法public static int[] twoSum1(int[] nums, int target) {//定义存放返回变量的数组int[] arr new int[2];//遍历整个数组for (int i 0; i < nums.length; i) {//从第二个数开始相加判断for (int j…...

用STM32 HAL库和MPU6050 DIY平衡小车:PID参数整定实战与小车‘站起来’的调试日记

STM32平衡小车PID调参实战&#xff1a;从剧烈抖动到稳定站立的调试手记 1. 平衡小车的核心挑战 当我第一次按下电源开关&#xff0c;看着这个小家伙像醉汉一样左右摇摆然后轰然倒下时&#xff0c;才真正理解到平衡控制的精妙之处。基于STM32和MPU6050的平衡小车项目&#xff0c…...

别让电源拖后腿!手把手教你用Sigrity PowerDC搞定PCB直流压降仿真(附HyperLynx SPD转换指南)

电源完整性实战&#xff1a;从零掌握Sigrity PowerDC直流压降仿真全流程 在高速PCB设计中&#xff0c;电源网络的稳定性往往决定了整个系统的可靠性。想象一下这样的场景&#xff1a;一款精心设计的硬件产品在实验室测试时频繁出现异常重启&#xff0c;经过两周的排查最终定位到…...

如何3步快速掌握DataCleaner:开源数据质量工具完全指南

如何3步快速掌握DataCleaner&#xff1a;开源数据质量工具完全指南 【免费下载链接】DataCleaner The premier open source Data Quality solution 项目地址: https://gitcode.com/gh_mirrors/dat/DataCleaner 你是否曾为数据中的错误和缺失而烦恼&#xff1f;DataClean…...

基于Apify与AI模型的产品安全风险智能识别系统构建指南

1. 项目概述&#xff1a;一个面向产品安全与消费者风险管理的智能工具最近在梳理一些供应链和电商合规的项目时&#xff0c;我反复被一个核心痛点困扰&#xff1a;如何系统性地、自动化地识别和评估海量商品信息中潜藏的消费者风险&#xff1f;无论是作为平台方的风控团队&…...

TPAMI 投稿微信群成立!

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【顶会/顶刊】投稿交流群 添加微信&#xff1a;CVer2233&#xff0c;助手会拉你进群&#xff01; 扫描下方二维码&#xff0c;加入CVer学术星球&#xff01;可获得最新顶会/顶…...

观察Taotoken按Token计费模式下的月度成本变化

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观察Taotoken按Token计费模式下的月度成本变化 在项目开发中&#xff0c;尤其是涉及大模型API调用的场景&#xff0c;成本控制是一…...

排列检验的色彩力量

原文&#xff1a;towardsdatascience.com/the-colorful-power-of-permutation-tests-38f0490ebfba https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4ce3dd25bad50a2c1f85e5463faedb76.png 由作者创作的鸢尾花&#xff0c;通过 Midjourney…...

Adobe GenP 3.0终极指南:3步解锁全系列Adobe CC软件

Adobe GenP 3.0终极指南&#xff1a;3步解锁全系列Adobe CC软件 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 还在为Adobe Creative Cloud高昂的订阅费用而烦恼吗…...

设计模式实战指南:从理论到工程落地的技能库构建

1. 项目概述&#xff1a;设计模式技能库的构建初衷最近在整理团队的技术资产&#xff0c;发现一个挺普遍的现象&#xff1a;很多同学在面试时能把设计模式的概念背得滚瓜烂熟&#xff0c;什么“单例模式确保一个类只有一个实例”&#xff0c;但一到实际项目里&#xff0c;面对稍…...

GNU Board G6开源社区引擎:PHP+MySQL架构部署与深度定制指南

1. 项目概述&#xff1a;一个被低估的社区引擎如果你在寻找一个能快速搭建社区、论坛或者内容管理系统的开源方案&#xff0c;并且对PHP和MySQL环境比较熟悉&#xff0c;那么gnuboard/g6这个名字可能值得你花点时间了解一下。它不是那种铺天盖地宣传的明星项目&#xff0c;但在…...