ffmpeg 合并小米云台视频文件 (java生成)
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生成)相关推荐
- Java使用ffmpeg合并多个视频文件、mp3文件
/*** 合并多个视频文件.mp3文件*/@Testpublic void mergeFile(){// 合并命令String commit = "$0 -f concat -safe 0 ...
- Java中合并多个视频文件转换一个新的视频
目录 一.概述 二..FFmpeg 1. 实现思路 2. 工具类 三.isoparser Jar解析方式 1. 依赖Jar 2. 工具类 如果发现本文有错误的地方,请大家毫不吝啬,多多指教,欢迎大家评 ...
- java流与文件——java生成解压缩文件(夹)
[0]README 0.1) 本文描述转自 http://blog.csdn.net/chenssy/article/details/9622171 , 旨在理解 java流与文件--java生成解压 ...
- python中使用ffmpeg合并音频与视频_ffmpeg 在windows 下的安装和使用(python, 合并音频和视频)...
参考: windows下ffmpeg的安装与python调用 https://blog.csdn.net/chunjiekid/article/details/88205824 1. 下载 ffm ...
- m3u8合并解密 TS视频文件分片合并解密
m3u8合并解密 TS视频文件分片合并解密 M3U8是一种纯文本文件格式,用于指定要按顺序播放的媒体文件列表.它通常用于通过互联网传输音频和视频内容,并受到包括VLC和QuickTime在内的许多媒体 ...
- 手机浏览器下载的m3u8格式的多个视频文件合并成一个视频(Java实现)
最近手机下载了几个视频,在浏览器上播放无异常,但是当我想把视频复制到电脑上时,发现该视频格式为m3u8,仔细一看,原来还有一个以"."开头的隐藏文件夹,里面有好多大约10s的视频文 ...
- C语言ffmpeg合并多个视频,ffmpeg合并多个视频
/// ///遍历文件夹获取所有视频路径/// /// private void TraverseFolder(string path,stringfilepath) { DirectoryInfo ...
- 使用ffmpeg将mts格式视频文件转为mp4视频文件
mts格式的视频文件是索尼相机拍摄后生成存储的,但是我们的实验时常会需要mp4格式的视频文件,因此可以使用ffmpeg对其进行转化 指令: ffmpeg -i box.MTS -s 640x480 - ...
- ffmpeg合并两个视频
我需要在程序里面实现合并两个视频的功能,用的是C#,但是直接能使用的成熟工具好像并不多,这两天找了很多工具: aforge.NET 可以处理视频但是只能处理视频画面,声音处理不了,对我来说没用. ac ...
最新文章
- java.lang.NullPointerException异常原因及解决
- java 静态类 安全_Java静态static工具类线程安全问题研究
- 基于HAproxy的web动静分离及输出状态检测页面
- 恒丰银行深夜紧急澄清!“我行与建设银行的报道严重不实”!恒丰银行称目前自身经营稳定有序
- python怎么反转单链表_单链表反转python实现代码示例
- 英语发音规则---Z字母
- 定时任务框架APScheduler学习详解
- 二叉树题目---3 另一个树的子树 AND 二叉树最大深度
- 图像处理与图像识别笔记(一)
- Android远程桌面助手之功能简介
- Django搭建登录注册功能
- MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
- 基于微信小程序的智能填表工具软件系统
- icem二维非结构网格划分_Ansys Icem CFD网格划分实例详解PDF及附件
- Qt 的 linuxFB XCB KMS XCB Wayland
- 穷人python入门教程视频_《穷》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
- Java中通过TCP协议发送和接收数据-Socket编程
- HTML 基本选择器
- docker swarm笔记-Swam mode教程
- C++ Primer Plus 阅读笔记一