1,引入需要的包

<dependency><groupId>com.googlecode.mp4parser</groupId><artifactId>isoparser</artifactId><version>1.1.22</version>
</dependency>

2,代码献上,希望对需要的人有帮助

package com.jiuyi.util;import com.alibaba.fastjson.JSON;
import com.coremedia.iso.boxes.Container;
import com.googlecode.mp4parser.authoring.Movie;
import com.googlecode.mp4parser.authoring.Track;
import com.googlecode.mp4parser.authoring.builder.DefaultMp4Builder;
import com.googlecode.mp4parser.authoring.container.mp4.MovieCreator;
import com.googlecode.mp4parser.authoring.tracks.AppendTrack;
import lombok.extern.slf4j.Slf4j;import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;@Slf4j
public class Mp4ParserUtils {private Mp4ParserUtils() {}public static void main(String[] args) {List<String> filePaths = new ArrayList<>(5);filePaths.add("C:\\Users\\hankui\\Desktop\\1\\387702304397835807.mp4");filePaths.add("C:\\Users\\hankui\\Desktop\\1\\387702304397837443.mp4");filePaths.add("C:\\Users\\hankui\\Desktop\\1\\387702304397840726.mp4");mergeVideoNew(filePaths, new File("C:\\Users\\hankui\\Desktop\\1\\147.mp4"));}public static String mergeVideoNew(List<String> filePaths, File resultFile) {try {Collections.sort(filePaths);log.info("filePaths=" + JSON.toJSONString(filePaths));Movie[] inMovies = new Movie[filePaths.size()];for (int i = 0; i < filePaths.size(); i++) {log.info("filePaths=" + filePaths.get(i));File f = new File(filePaths.get(i));if (f.exists() && f.isFile() && f.length() > 0) {log.info("filePaths real:" + f.getAbsolutePath());inMovies[i] = MovieCreator.build(filePaths.get(i));}}// 分别取出音轨和视频List<Track> videoTracks = new LinkedList<>();List<Track> audioTracks = new LinkedList<>();for (Movie m : inMovies) {for (Track t : m.getTracks()) {if ("soun".equals(t.getHandler())) {audioTracks.add(t);}if ("vide".equals(t.getHandler())) {videoTracks.add(t);}}}// 合并到最终的视频文件Movie outMovie = new Movie();if (audioTracks.size() > 0) {outMovie.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));}if (videoTracks.size() > 0) {outMovie.addTrack(new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()])));}Container mp4file = new DefaultMp4Builder().build(outMovie);// 将文件输出if (resultFile.exists() && resultFile.isFile()) {resultFile.delete();}FileChannel fc = new RandomAccessFile(resultFile, "rw").getChannel();mp4file.writeContainer(fc);fc.close();// 合成完成后把原片段文件删除for (String filePath : filePaths) {File file = new File(filePath);file.delete();}return resultFile.getAbsolutePath();} catch (FileNotFoundException e) {log.error("mergeVideo has error: " + e.getMessage());} catch (Exception e) {log.error("mergeVideo has error1: " + e.getMessage());}return null;}}

java语言,MP4视频文件合并功能相关推荐

  1. java 合并视频_Java 合并多个MP4视频文件

    局限性 只支持MP4文件 经过尝试对于一些MP4文件分割不了 依赖 com.googlecode.mp4parser isoparser 1.1.22 工具类 package com.example. ...

  2. java 视频 合并成一个_Java 合并多个MP4视频文件

    局限性 只支持MP4文件 经过尝试对于一些MP4文件分割不了 依赖 com.googlecode.mp4parser isoparser 1.1.22 工具类 package com.example. ...

  3. java mp4分割_Java 合并多个MP4视频文件

    局限性 只支持mp4文件 经过尝试对于一些mp4文件分割不了 依赖 com.googlecode.mp4parser isoparser 1.1.22 工具类 package com.example. ...

  4. java字节流——把两个视频文件合并成一个,输出为一个新文件

    下面把D盘的两个视频文件合并为一个,并输出为D:\new.mp4 package com.oracle.core;import java.io.File; import java.io.FileInp ...

  5. 常用MIME类型,解决IIS布署后字体文件、mp4视频文件等not found 的错误

    前言:项目在本地运行正常,但部署在IIS服务器后使用浏览器访问项目会报:404 not found 错误,包括mp4视频文件和woff文件找不到..如下 原因:在IIS中没有将 .mp4和 .woff ...

  6. Mp4 分割 怎么将mp4视频文件分割成几段

    当我们需要分割视频或音频的某一段时,就需要通过分割视频来实现.虽然分割视频是一件很容易的事,但对于初学者来说,面对网上五花八门的号称能分割视频的软件却又要花费一段时间去摸索,实在耗时耗力.今天小编也根 ...

  7. 如何将MP4视频文件转换成MP3音频格式

    2018年11月9日,美国漫威影业公司的大作<毒液:致命守护者>开始在中国上映,作为漫威在2018年最后的压轴巨作自然是非常不错的.在影片中很多激斗的场景也有共生体和宿主之间的对话,但是电 ...

  8. 为何恢复出来的MP4视频文件打不开

    MP4是一种集音频.视频.图片浏览.电子书.收音机等于一体的多功能播放器.在众多的视频格式中,MP4也算是大家常用的一种.有时候我们会不小心弄丢MP4里面的视频文件,但是想尽办法恢复之后却发现有MP4 ...

  9. 如何将MP4视频文件转换成GIF动态图片

    在观看电视剧时,剧中常会出现很多搞笑滑稽的镜头,比如把视频MP4转GIF动态图片,那么效果就很好了.虽说现在很多的手机视频播放器都有制作GIF的功能,不过也就10秒钟左右,时间很短,如果使用软件制作G ...

  10. java 读取音频/视频 文件时长

    java 读取音频/视频 文件时长 支持mp3,mp4,mov,m4a,wav 格式文件 源码 https://github.com/opensourceteams/java-maven-projec ...

最新文章

  1. ionic打包/编译遇到的问题
  2. 2011 年最重要的 10 个开源软件
  3. ASP.NET Core 入门教程 6、ASP.NET Core MVC 视图布局入门
  4. java 多线程系列基础篇(二)
  5. Linux使用tcpdump抓获取WIFI包
  6. mysql并发量_高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!
  7. [PyTorch] 保存模型和恢复模型
  8. 算数or算卦,和业务人谈“预测”到底在谈啥?
  9. 机器学习算法之——卷积神经网络(CNN)原理讲解
  10. 1小时场景生活圈来了!苏宁双十一引领零售体验革命
  11. 计算机教学提问的观课量表,观课议课|如何使用观察和记录量表
  12. FCC ES6篇中的解构赋值
  13. [2019CCPC秦皇岛] G Game on Chessboard 状压dp
  14. C语言 6习题13 编一程序,将两个字符串连接起来,不要用strcat函数。
  15. java duplicate_Duplicate spring bean id
  16. Vue项目实战——实现一个任务清单(学以致用,两小时带你巩固和强化Vue知识点)
  17. CSS - 制作三角形
  18. 网络设备配置与管理-综合实验2
  19. 新建网站如何跟服务器连接,flashfxp怎么用(新建添加网站[站点]连接)
  20. JavaWeb新闻项目(查询阅读主题维护)

热门文章

  1. 论组织管理-EMBA课程小记
  2. 练遇24H智能健身房获巨额融资,突破传统局限,打造新健身时代
  3. 2018年Android面试题含答案
  4. 2021-02-04-scrapy爬虫案例1:爬取博客园新闻版块详情页-基础入门篇
  5. 网友抽中淘宝大奖,怎料小丑竟是自己
  6. 【CVPR 2022】目标检测SOTA:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection
  7. web -- 背景图片及文字
  8. mybatis插入大于号小于号到oracle
  9. 读v_JULY_v整理笔试题博客有感,整理些答案。
  10. 房屋管理系统简单Damo