精华内容
下载资源
问答
  • Agile MP4 Video Joiner【MP4视频合并工具】 v2.3.6 绿色注册版
  • 视频合并器是一款Windows平台下的全格式视频合并工具软件,它可以一次性将多个视频格式文件合并成一个单独的视频文件,并且有多种自适应屏幕尺寸可以选择。 这款合并器支持苹果iPhone、iPad、安卓手机、安卓平板等...
  • [工具]TS 视频合并工具

    千次阅读 2020-04-19 12:01:23
    简介 当下载 m3u8 资源时,通常产生的是多个 ts 视频文件,所以需要借助某些工具来将这些 ts 视频片段整合为一个视频文件。 本软件主要解决的就是这个问题,底层基于ffmpeg,可正常运行在 ...ts文件合并工具,同时...

    简介

    在这里插入图片描述
    当下载 m3u8 资源时,通常产生的是多个 ts 视频文件,所以需要借助某些工具来将这些 ts 视频片段整合为一个视频文件。

    本软件主要解决的就是这个问题,底层基于ffmpeg,可正常运行在 Windows 和 Mac 平台。不仅可以合并 ts 为单个通用的视频文件,还支持视频格式转换。

    Github

    下载

    目前支持 win-x64 & mac-x64:地址

    ts文件合并工具,同时支持其他视频格式转换原理mkv/ts/mp4。

    软件界面

    主界面:

    在这里插入图片描述

    转换成功:

    在这里插入图片描述
    支持拖动添加文件:

    在这里插入图片描述

    支持的合并的格式:

    在这里插入图片描述

    展开全文
  • 这里我就分享一个好用的视频合并工具软件,这个软件可以合并咱们一般可以接触到的大部分流行视频格式,以及各种视频文件尺寸大小。先上截图: 这个软件叫做视频合并器,可以一次性将多个视频格式文件合并成一...

    现在各种小视频很火,不少朋友也需要合并自己录制的和获取的视频文件。视频文件格式很多,而且经常尺寸不一,是否有一个办法可以无论什么格式、什么尺寸的视频都可以合并呢?这里我就分享一个好用的视频合并工具软件,这个软件可以合并咱们一般可以接触到的大部分流行视频格式,以及各种视频文件尺寸大小。先上截图:

     

    视频合并器

     

    这个软件叫做视频合并器,可以一次性将多个视频格式文件合并成一个单独的视频文件,并且有多种自适应屏幕尺寸可以选择, 并且支持苹果iPhone、iPad、安卓手机、安卓平板等所有主流手机和平板视频格式,以及大部分的流行视频格式如: MP4, MOV, FLV, 3GP, AVI, WMV, MPG, VOB等几十种格式。并且它可以同时混合合并多种视频格式的文件,可以方便的把mp4和其他多种视频文件格式一次性合并成一个视频。 

    它另外一个独特的功能,就是多种自适应屏幕尺寸。在合并视频过程中,咱们一般可能遇到的最大麻烦就是每个视频的屏幕尺寸大小是不同的。除了将视频合并成标准的16:9,5:4,9:16三种屏幕比例,视频合并器还提供了多种自适应屏幕尺寸的选项:缩放至最大宽度、缩放至最大高度、缩放至最大宽x高、缩放至最小宽度、缩放至最小高度、缩放至最小宽x高、1:1(按宽度)和1:1(按高度)。同时这款软件也提供了完全自定义尺寸,可以让用户输入想要的屏幕宽高数字来设置自定义屏幕尺寸。 

    不同尺寸视频合并,无黑框合并视频
    这款视频合并工具还支持不同尺寸视频合并,可以通过勾选缩放视频选项,程序会将视频自动拉伸画面比例进行无黑框视频合并。如果不勾选缩放视频选项,程序会自动用黑色填充比例外的区域,保证原始视频比例。 

    视频合并器默认保留原视频画面质量,如果想压缩视频文件或者调整视频画面质量,程序也提供自定义比特率。这样就可以根据自己的需求来调整视频比特率的数值啦。 

    还有,如果电脑是64位多核CPU和64位操作系统,这款视频合并器提供了64位多线程加速选项,可以提供更快的视频合并速度。 

    支持的合并后的输出格式有:MP4, MOV, MKV, MPG, AVI, TS, RM, VOB。

    官网链接:http://1xg.com.cn/#15

    展开全文
  • 该工具为m3u8分段视频合并工具,有时候我们下载到的视频是m3u8格式的分段文件,该工具可以一键合并为mp4格式,真实有效,请放心下载。
  • 所以决心自己做一个免费的MP4视频合并工具吧。 在网上找了很多资料,最后选定了google的mp4parser工具包来进行视频的处理,NO B B ,SHOW U CODE。 @Slf4j public class Mp4ParserUtils { private static final ...

    前言

    最近是饱受折磨,媳妇的单位一直然让她做一些工作视频的合并,在网上找了很多的资源,最后发现都是坑-----------要VIP,果然天底下就没有免费的午餐。

    不说了。都是眼泪。

    所以决心自己做一个免费的MP4视频合并工具吧。
    在网上找了很多资料,最后选定了google的mp4parser工具包来进行视频的处理,NO B B ,SHOW U CODE。

    @Slf4j
    public class Mp4ParserUtils {
    
        private static final String MP3_HANDLER = "soun";
        private static final String MP4_HANDLER = "vide";
    
        public static void mergeMP4(List<String> sourceFiles, File target) throws IOException {
            //添加需要合并的文件
            List<Track> videoTracks = new LinkedList<>();
            List<Track> audioTracks = new LinkedList<>();
            getVideoTracks(sourceFiles, videoTracks, audioTracks);
            Movie movie = creatNewMovie(videoTracks, audioTracks);
            Container out = new DefaultMp4Builder().build(movie);
            FileChannel fc = new RandomAccessFile(target, "rw").getChannel();
            out.writeContainer(fc);
            fc.close();
        }
    
        private static void getVideoTracks(List<String> sourceFiles, List<Track> videoTracks, List<Track> audioTracks) throws IOException {
            List<Movie> movieList = new LinkedList<>();
            for (String filePath : sourceFiles) {
                Movie movie = MovieCreator.build(filePath);
                movieList.add(movie);
            }
            for (Movie m : movieList) {
                for (Track t : m.getTracks()) {
                    if (StrUtil.equals(MP3_HANDLER, t.getHandler())) {
                        audioTracks.add(t);
                    }
                    if (StrUtil.equals(MP4_HANDLER, t.getHandler())) {
                        videoTracks.add(t);
                    }
                }
            }
        }
    
        private static Movie creatNewMovie(List<Track> videoTracks, List<Track> audioTracks) throws IOException {
            Movie result = new Movie();
            if (audioTracks.size() > 0) {
                result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));
            }
            if (videoTracks.size() > 0) {
                result.addTrack(new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()])));
            }
            return result;
        }
    
        public static void main(String[] args) throws IOException {
            List<String> strings = new ArrayList<>();
            strings.add("C:\\Users\\Lenovo\\Desktop\\temp\\1321695771019579392\\b30369u5j3q.p701.1.mp4.mp4");
            strings.add("C:\\Users\\Lenovo\\Desktop\\temp\\1321695771019579392\\b30369u5j3q.p701.2.mp4.mp4");
            File file = new File("C:\\Users\\Lenovo\\Desktop\\temp\\1321695771019579392\\merge\\merge.mp4");
            mergeMP4(strings, file);
        }
    
    }
    

    已测试完毕,可以使用。使用要注意的地方是:视频的顺序,要自己控制。根据传入集合的顺序来进行处理。

    好了,晚上再也不怕媳妇让我给她合并视频了

    展开全文
  • Xmlbar Video Joiner稞麦视频合并器是一款免费的视频合并工具,它支持将多个FLV/MP4/WMV/RMVB文件合并为一个完整的视频文件,可查看视频文件属性,如分辨率码率,帧速率及时长,视频编码音频编码类型。点击 添加...
  • mp4parser是一个视频处理的开源工具箱,我希望在Java工程里使用视频剪切、视频合并、视频转码这3种功能。 由于mp4parser里的方法都依靠工具箱里的一些内容,所以需要将这些内容打包成jar包,放到自己的工程里,才能...

    1.概述

    mp4parser是一个视频处理的开源工具箱,我希望在Java工程里使用视频剪切、视频合并、视频转码这3种功能。

    由于mp4parser里的方法都依靠工具箱里的一些内容,所以需要将这些内容打包成jar包,放到自己的工程里,才能对mp4parser的方法进行调用。

    2.打包jar包

    1)下载mp4parser:https://github.com/sannies/mp4parser (我下载的版本是:mp4parser-mp4parser-project-1.9.27),解压。

    2)在eclipse-java里,以工程形式导入mp4parser-mp4parser-project-1.9.27文件夹。

    3)如下图,在isoparser文件夹和muxer文件夹下面分别都有一个pom.xml的文件,先后在这两个xml文件上进行操作:右键->Debug As->Maven install,在eclipse的console工作台上能看到安装进程,如果安装成功,最后会提示SUCCESS INSTALL

    成功安装后,isoparser文件夹和muxer文件夹下都会出现一个名为target的文件夹,target文件夹里会有打包好的jar包。

    我打包好的jar包已上传到CSDN下载页面,可直接下载使用,下载传送门http://download.csdn.net/detail/u014691453/9688573


    3.在eclipse里建立工程

    1)配置好jdk,加载jar包

    在工程名字上进行操作:右键->Properties->Java Build Path->Libraries->Add External JARs,把打包好的jar包加载进来。


    2)AppendVideo.java,ShortenVideo.java,H264ToMp4.java

    在工程的src文件夹下建立以上3个java文件,大部分代码源自mp4parser工具箱。

    AppendVideo.java 视频合并

    import org.mp4parser.Container;
    import org.mp4parser.muxer.Movie;
    import org.mp4parser.muxer.Track;
    import org.mp4parser.muxer.builder.DefaultMp4Builder;
    import org.mp4parser.muxer.container.mp4.MovieCreator;
    import org.mp4parser.muxer.tracks.AppendTrack;
    
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.nio.channels.FileChannel;
    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.List;
    
    public class AppendVideo {
        public static void main(String[] args) throws IOException {
    
    
            String[] srcVideoPath = new String[]{
            		"v1.mp4",
            		"v1.mp4",
                            "v1.mp4"
            };
            String dstVideoPath = "";
            videoMerge(srcVideoPath, dstVideoPath);
        }
        
        public static void videoMerge(String[] srcVideoPath, String dstVideoPath) throws IOException {
    
            List<Movie> inMovies = new ArrayList<Movie>();
            for (String videoUri : srcVideoPath) {
                inMovies.add(MovieCreator.build(videoUri));
            }
    
            List<Track> videoTracks = new LinkedList<Track>();
            List<Track> audioTracks = new LinkedList<Track>();
    
            for (Movie m : inMovies) {
                for (Track t : m.getTracks()) {
                    if (t.getHandler().equals("soun")) {
                        audioTracks.add(t);
                    }
                    if (t.getHandler().equals("vide")) {
                        videoTracks.add(t);
                    }
                }
            }
    
            Movie result = new Movie();
    
            if (audioTracks.size() > 0) {
                result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));
            }
            if (videoTracks.size() > 0) {
                result.addTrack(new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()])));
            }
    
            Container out = new DefaultMp4Builder().build(result);
    
            FileChannel fc = new RandomAccessFile(String.format(dstVideoPath+"mergeOutput.mp4"), "rw").getChannel();
            out.writeContainer(fc);
            fc.close();
        }
    }

    ShortenVideo.java 视频剪切

    import org.mp4parser.Container;
    import org.mp4parser.muxer.Movie;
    import org.mp4parser.muxer.Track;
    import org.mp4parser.muxer.builder.DefaultMp4Builder;
    import org.mp4parser.muxer.container.mp4.MovieCreator;
    import org.mp4parser.muxer.tracks.AppendTrack;
    import org.mp4parser.muxer.tracks.ClippedTrack;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.channels.FileChannel;
    import java.util.Arrays;
    import java.util.LinkedList;
    import java.util.List;
    
    
    public class ShortenVideo {
    	
    	public static void main(String[] args) throws IOException{
    		double [] times = {1,4,2,6,9,16};  //剪切1~4秒,2~6秒,9~16秒
    		String srcVideoPath = "test.mp4";
    		String dstVideoPath = "";
    		videoCut(srcVideoPath, dstVideoPath, times);
    	}
    
    
        public static void videoCut(String srcVideoPath, String dstVideoPath, double [] times) throws IOException {
        	int dstVideoNumber = times.length/2;
    		String [] dstVideoPathes = new String[dstVideoNumber];
    		for(int i=0; i<dstVideoNumber; i++){
    			dstVideoPathes[i] = dstVideoPath+"cutOutput-"+i+".mp4";
    		}
            int timesCount = 0;
            
        	for(int idst=0; idst<dstVideoPathes.length; idst++){
        	//Movie movie = new MovieCreator().build(new RandomAccessFile("/home/sannies/suckerpunch-distantplanet_h1080p/suckerpunch-distantplanet_h1080p.mov", "r").getChannel());
            Movie movie = MovieCreator.build(srcVideoPath);
    
            List<Track> tracks = movie.getTracks();
            movie.setTracks(new LinkedList<Track>());
            // remove all tracks we will create new tracks from the old
    
            
            double startTime1 = times[timesCount];
            double endTime1 = times[timesCount+1];
            timesCount = timesCount + 2;
    
            boolean timeCorrected = false;
    
            // Here we try to find a track that has sync samples. Since we can only start decoding
            // at such a sample we SHOULD make sure that the start of the new fragment is exactly
            // such a frame
            for (Track track : tracks) {
                if (track.getSyncSamples() != null && track.getSyncSamples().length > 0) {
                    if (timeCorrected) {
                        // This exception here could be a false positive in case we have multiple tracks
                        // with sync samples at exactly the same positions. E.g. a single movie containing
                        // multiple qualities of the same video (Microsoft Smooth Streaming file)
    
                        throw new RuntimeException("The startTime has already been corrected by another track with SyncSample. Not Supported.");
                    }
                    startTime1 = correctTimeToSyncSample(track, startTime1, false);
                    endTime1 = correctTimeToSyncSample(track, endTime1, true);
                    
                    timeCorrected = true;
                }
            }
    
            for (Track track : tracks) {
                long currentSample = 0;
                double currentTime = 0;
                double lastTime = -1;
                long startSample1 = -1;
                long endSample1 = -1;
                
    
                for (int i = 0; i < track.getSampleDurations().length; i++) {
                    long delta = track.getSampleDurations()[i];
    
    
                    if (currentTime > lastTime && currentTime <= startTime1) {
                        // current sample is still before the new starttime
                        startSample1 = currentSample;
                    }
                    if (currentTime > lastTime && currentTime <= endTime1) {
                        // current sample is after the new start time and still before the new endtime
                        endSample1 = currentSample;
                    }
                    
                    lastTime = currentTime;
                    currentTime += (double) delta / (double) track.getTrackMetaData().getTimescale();
                    currentSample++;
                }
                //movie.addTrack(new AppendTrack(new ClippedTrack(track, startSample1, endSample1), new ClippedTrack(track, startSample2, endSample2)));
                movie.addTrack(new ClippedTrack(track, startSample1, endSample1));
            }
            long start1 = System.currentTimeMillis();
            Container out = new DefaultMp4Builder().build(movie);
            long start2 = System.currentTimeMillis();
            FileOutputStream fos = new FileOutputStream(String.format(dstVideoPathes[idst]));
            FileChannel fc = fos.getChannel();
            out.writeContainer(fc);
    
            fc.close();
            fos.close();
            long start3 = System.currentTimeMillis();
            
        	}
        }
    
    
        private static double correctTimeToSyncSample(Track track, double cutHere, boolean next) {
            double[] timeOfSyncSamples = new double[track.getSyncSamples().length];
            long currentSample = 0;
            double currentTime = 0;
            for (int i = 0; i < track.getSampleDurations().length; i++) {
                long delta = track.getSampleDurations()[i];
    
                if (Arrays.binarySearch(track.getSyncSamples(), currentSample + 1) >= 0) {
                    // samples always start with 1 but we start with zero therefore +1
                    timeOfSyncSamples[Arrays.binarySearch(track.getSyncSamples(), currentSample + 1)] = currentTime;
                }
                currentTime += (double) delta / (double) track.getTrackMetaData().getTimescale();
                currentSample++;
    
            }
            double previous = 0;
            for (double timeOfSyncSample : timeOfSyncSamples) {
                if (timeOfSyncSample > cutHere) {
                    if (next) {
                        return timeOfSyncSample;
                    } else {
                        return previous;
                    }
                }
                previous = timeOfSyncSample;
            }
            return timeOfSyncSamples[timeOfSyncSamples.length - 1];
        }
    }

    H264ToMp4.java 视频转码H264转mp4

    import org.mp4parser.Container;
    import org.mp4parser.muxer.FileDataSourceImpl;
    import org.mp4parser.muxer.Movie;
    import org.mp4parser.muxer.builder.DefaultMp4Builder;
    import org.mp4parser.muxer.tracks.h264.H264TrackImpl;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.channels.FileChannel;
    
    
    public class H264ToMp4 {
    	
        public static void main(String[] args) throws IOException {
        	String srcVideoPath = "count.h264";
        	String dstVideoPath = "";
        	videoToVideo(srcVideoPath, dstVideoPath);
        }
        public static void videoToVideo(String srcVideoPath, String dstVideoPath) throws IOException {
        	H264TrackImpl h264Track = new H264TrackImpl(new FileDataSourceImpl(srcVideoPath));
            //AACTrackImpl aacTrack = new AACTrackImpl(new FileInputStream("/home/sannies2/Downloads/lv.aac").getChannel());
            Movie m = new Movie();
            m.addTrack(h264Track);
            //m.addTrack(aacTrack);
    
            Container out = new DefaultMp4Builder().build(m);
            FileOutputStream fos = new FileOutputStream(new File(dstVideoPath+"h264_output.mp4"));
            FileChannel fc = fos.getChannel();
            out.writeContainer(fc);
            fos.close();
            
        }
    }

    展开全文
  • m3u8视频下载合并工具

    2018-09-01 12:38:13
    m3u8视频下载合并工具,只需输入m3u8视频地址即可自动下载并合并文件,方便,实用,无需其他操作,快速将视频合并为一个完整的mp4视频
  • m3u8缓存视频合并mp4

    2018-12-18 15:44:57
    自动搜索各浏览器下载的视频分段文件,合并MP4文件,支持后台合并合并完成删除源分段文件等等
  • 视频剪切 合并 工具 支持多音轨 ! 非常好用 我 自己用的软件
  • 原本想着通过java的IO流的方式进行MP4文件的合并,但是合并完成后发现并不是真正合并,文件的size是合并了,但是只能观看一个MP4文件,经过查询用FFmpeg合并MP4挺好使的,大体流程是: (1)1.MP4—>1.ts 将单个...
  • Lite MP4 Tool v2.3 - 专业MP4视频转换工具 简介: Lite MP4 Tool是完全免费绿色软件,无需安装即可使用。它是一个集自动生成avs并压缩输出MP4AVC格式(支持PSP、iPhone、Android等设备播放)的转换工具。其主要...
  • 用 FFMPEG 合并 MP4 视频

    千次阅读 2019-05-07 11:15:34
    因为 ffmpeg 是支持切分 mp4 视频的,所以我就理所当然的以为 ffmpeg 是支持视频合并。直到今天同事找我问方法,才发现一直以为的方法是错误的, mp4 不支持直接 concate(丢人了。。。),赶紧补了一下能量,从网上...
  • 使用FFmpeg合并多个MP4视频
  • 视频无损合并工具(FFmpeg Joiner)是一个基于FFmpeg的视频合并软件,支持封装成为各种格式的视频,快来下载体验吧。 支持的视频格式: *.avi;*.wmv;*.wmp;*.wm;*.asf;*.mpg;*.mpeg;*.mpe;*.m1v;*.m2v;*.mpv2;*.mp2v;*...
  • ts合并工具

    2018-10-29 10:42:04
    ts合并工具,合并后为MP4格式文件
  • 网上的一些视频合并工具又不能很好的将这些大量的零散文件合并生成一个完整的视频。所以就自己写了个简单的工具将缓存文件合并成完整的视频,然后可以通过其他工具进行视频截取或者生成jif。这个工具可以合并视频...
  • B站视频合并工具
  • MP4info: 查看MP4文件的信息 mp4Box: 一款用于单个或者多个mp4文件进行合并的音频视频,可以将mp4流合并mp4视频文件,支持M4V,CMP,H264,264,H263,263视频流 untrunc: 视频修复工具
  • 视频无损剪切分割截取合并工具

    千次阅读 2019-01-21 20:02:12
    视频无损剪切分割截取合并工具
  • uc浏览器视频缓存合并工具

    千次阅读 2017-12-20 20:55:00
    开发语言:C#开发工具: Visual Studio 2017 Community 实例图示: 程序代码下载地址 windows 64安装程序下载地址 注意:android手机中UC浏览器视频缓存文件存放在UCDownloads/Video...
  • 硕鼠视频合并单文件绿色版,是独立版的硕鼠视频合并软件,采用MP4Box和FlvBind命令行来进行视频合并的GUI界面软件,这个工具合并出来的视频基本上可以说是无缝且无损的。
  • Android实现视频剪切、视频拼接以及音视频合并

    万次阅读 多人点赞 2017-07-06 18:10:38
    因公司项目有需求,要实现视频剪切,视频拼接以及音视频合并的功能,自己通过在网上查找大量的资料终于把功能实现了,把实现的公共类提取出来,以便以后复习巩固。 使用map4parser作为视频处理包,android studio...
  • 网页m3u8视频自动下载合并工具

    万次阅读 2019-10-05 14:26:51
    m3u8是什么,什么是m3u8,详细参考百度百科 在网页抓取m3u8 这里推荐使用浏览器的扩展插件:FVD Downloader ...安装完后,打开包含m3u8视频的网页 下载视频 然后打开软件 添加任务后,我们点全部开始就行了。 ...
  • 视频合并专家 v12.2.zip

    2019-07-08 06:14:47
    视频合并专家是一款简单易用,功能强大的跨格式视频合并工具。它可以将多个不同格式的AVI、MPEG、MPG、DAT、RM、RMVB、VOB、WMV、ASF、MOV、QT、MP4、3GP、FLV、MKV、MTS、M2TS、TS、DV、F4V、M4V、MOD、TOD、NSV等...
  • Android 使用 mp4parser 做视频拼接合并

    千次阅读 2019-04-16 01:07:07
    做短视频拍摄时,在分段录制结束需要将多个视频片段拼接成一...// inputListFilePath 为需要合并的文件列表文件,每行一个文件路径 String cmd = "ffmpeg -y -f concat -safe 0 -i " + inputListFilePath + " -c co...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,815
精华内容 1,526
关键字:

mp4视频合并工具