1. 因为摄像头输出文件编码格式为 hevc 则需要把它转化为 h.264 格式在进行处理

命令: ffmpeg -i ./VID_20210818_201006.mp4 -map 0 -c:a copy -c:s copy -c:v libx264 ./0.mp4

2. 需要再把 mp4 文件转化为 ts 文件在进行合并

命令: ffmpeg -i ./0.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts ./0.ts

3. 再把 ts 文件合并为 mp4 文件

命令:  ffmpeg -i "concat:./0.ts|./1.ts|./2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4

4. 如果需要分离音频和视频则需要在处理

仅提取视频: ffmpeg -i output.mp4 -vcodec copy -an ext_video.mp4

仅提取音频: ffmpeg -i output.mp4 -acodec copy -vn ext_audio.m4a

如果需要吧m4a格式的音频转为mp3 则在转化一下就好

m4a ffmpeg -i ext_audio.m4a ext_audio.mp3

java代码生成脚本文件:

package com.orion;import org.junit.Test;import java.io.File;
import java.io.FileOutputStream;/*** @author Jiahang Li* @version 1.0.0* @since 2021/11/18 23:40*/
public class Ffmpeg {@Testpublic void generatorConvert() throws Exception {// 获取视频文件夹File dir = new File("F:\\1yyp");// 读取文件夹内要转换的文件File[] files = dir.listFiles((n) -> n.getName().endsWith(".mp4"));String convertCommandTemplate = "ffmpeg -i ./%s -map 0 -c:a copy -c:s copy -c:v libx264 ./convert_%d.mp4";StringBuilder sb = new StringBuilder();// 拼接转换命令for (int i = 0; i < files.length; i++) {sb.append(String.format(convertCommandTemplate, files[i].getName(), i)).append("\n");}// 生成转换脚本FileOutputStream out = new FileOutputStream(new File(dir, "convert.cmd"));out.write(sb.toString().getBytes());out.flush();}@Testpublic void generatorConcat() throws Exception {// 获取视频文件夹File dir = new File("F:\\1yyp");// 读取文件夹内要转换的文件File[] files = dir.listFiles((n) -> n.getName().startsWith("convert") && n.getName().endsWith(".mp4"));String convertTsCommandTemplate = "ffmpeg -i ./%s -c copy -bsf:v h264_mp4toannexb -f mpegts ./ts_%d.ts";StringBuilder sb = new StringBuilder();// 拼接转换命令for (int i = 0; i < files.length; i++) {sb.append(String.format(convertTsCommandTemplate, files[i].getName(), i)).append("\n");}// 拼接拼接命令StringBuilder concatFiles = new StringBuilder();for (int i = 0; i < files.length; i++) {concatFiles.append("./ts_").append(i).append(".ts");if (i != files.length - 1) {concatFiles.append("|");}}sb.append("\nffmpeg -i \"concat:").append(concatFiles.toString()).append("\" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4").append("\n");// 生成转换脚本FileOutputStream out = new FileOutputStream(new File(dir, "concat.cmd"));out.write(sb.toString().getBytes());out.flush();}}

食用方法:

1. 修改代码文件夹路径

2. 先执行  generatorConvert() 方法 生成 convert.cmd 文件

3. 执行  convert.cmd 文件, 生成 h.264 格式的 mp4 文件

4. 执行 generatorConcat() 方法 生成 concat.cmd 文件

5. 执行 concat.cmd 文件, 进行 mp4 文件的合并

6. 目录下的 output.mp4 就是合并后的文件

截图:

本人的 ffmpeg 版本为 4.4.1

生成的 convert.cmd 文件

生成的 concat.cmd 文件 (有删减)

最后:

本人亲测可放心食用, 如果有什么问题可以联系我, 我们一起讨论, 感谢!

ffmpeg 合并小米云台视频文件 (java生成)相关推荐

  1. Java使用ffmpeg合并多个视频文件、mp3文件

    /*** 合并多个视频文件.mp3文件*/@Testpublic void mergeFile(){// 合并命令String commit = "$0 -f concat -safe 0 ...

  2. Java中合并多个视频文件转换一个新的视频

    目录 一.概述 二..FFmpeg 1. 实现思路 2. 工具类 三.isoparser Jar解析方式 1. 依赖Jar 2. 工具类 如果发现本文有错误的地方,请大家毫不吝啬,多多指教,欢迎大家评 ...

  3. java流与文件——java生成解压缩文件(夹)

    [0]README 0.1) 本文描述转自 http://blog.csdn.net/chenssy/article/details/9622171 , 旨在理解 java流与文件--java生成解压 ...

  4. python中使用ffmpeg合并音频与视频_ffmpeg 在windows 下的安装和使用(python, 合并音频和视频)...

    参考: windows下ffmpeg的安装与python调用   https://blog.csdn.net/chunjiekid/article/details/88205824 1. 下载 ffm ...

  5. m3u8合并解密 TS视频文件分片合并解密

    m3u8合并解密 TS视频文件分片合并解密 M3U8是一种纯文本文件格式,用于指定要按顺序播放的媒体文件列表.它通常用于通过互联网传输音频和视频内容,并受到包括VLC和QuickTime在内的许多媒体 ...

  6. 手机浏览器下载的m3u8格式的多个视频文件合并成一个视频(Java实现)

    最近手机下载了几个视频,在浏览器上播放无异常,但是当我想把视频复制到电脑上时,发现该视频格式为m3u8,仔细一看,原来还有一个以"."开头的隐藏文件夹,里面有好多大约10s的视频文 ...

  7. C语言ffmpeg合并多个视频,ffmpeg合并多个视频

    /// ///遍历文件夹获取所有视频路径/// /// private void TraverseFolder(string path,stringfilepath) { DirectoryInfo ...

  8. 使用ffmpeg将mts格式视频文件转为mp4视频文件

    mts格式的视频文件是索尼相机拍摄后生成存储的,但是我们的实验时常会需要mp4格式的视频文件,因此可以使用ffmpeg对其进行转化 指令: ffmpeg -i box.MTS -s 640x480 - ...

  9. ffmpeg合并两个视频

    我需要在程序里面实现合并两个视频的功能,用的是C#,但是直接能使用的成熟工具好像并不多,这两天找了很多工具: aforge.NET 可以处理视频但是只能处理视频画面,声音处理不了,对我来说没用. ac ...

最新文章

  1. java.lang.NullPointerException异常原因及解决
  2. java 静态类 安全_Java静态static工具类线程安全问题研究
  3. 基于HAproxy的web动静分离及输出状态检测页面
  4. 恒丰银行深夜紧急澄清!“我行与建设银行的报道严重不实”!恒丰银行称目前自身经营稳定有序
  5. python怎么反转单链表_单链表反转python实现代码示例
  6. 英语发音规则---Z字母
  7. 定时任务框架APScheduler学习详解
  8. 二叉树题目---3 另一个树的子树 AND 二叉树最大深度
  9. 图像处理与图像识别笔记(一)
  10. Android远程桌面助手之功能简介
  11. Django搭建登录注册功能
  12. MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
  13. 基于微信小程序的智能填表工具软件系统
  14. icem二维非结构网格划分_Ansys Icem CFD网格划分实例详解PDF及附件
  15. Qt 的 linuxFB XCB KMS XCB Wayland
  16. 穷人python入门教程视频_《穷》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  17. Java中通过TCP协议发送和接收数据-Socket编程
  18. HTML 基本选择器
  19. docker swarm笔记-Swam mode教程
  20. C++ Primer Plus 阅读笔记一

热门文章

  1. 基于SSM框架的公交车查询系统的设计与实现
  2. jpa 使用hql进行联表查询
  3. 浅谈自动化控制系统的设计与实现
  4. 日志采集 - Filebeat
  5. python 绘制一个太阳花图形
  6. URL转二维码,图片
  7. Unity 模拟鼠标点击操作
  8. 微信分享默认logo修改
  9. cad自定义菜单cui_cad cui 2017经典菜单文件下载|cui文件(cad经典菜单)最新版_ - 极光下载站...
  10. 对象数据类型转value、name形式的对象数组数据类型