「java视频拼接」视频拼接教程

博主:adminadmin 2022-12-01 04:46:06 99

本篇文章给大家谈谈java视频拼接,以及视频拼接教程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何把几个视频拼接在一起?像这样的

下载个电影制作软件就够了,安装完之后,你就会用了,跟傻瓜相机差不多简单。Movie Maker

java 如何将多张JPG图片合成视频文件,比如:avi格式 或 mpg格式.

之前有做过图片合成视频的功能,大概代码就是这样,你可以看一下

/**

* 图片合成视频

* @param mp4SavePath 视频保存路径

* @param imageDir 图片地址

* @param rate 这个可以理解成视频每秒播放图片的数量

*/

public static boolean jpgToMp4(String mp4SavePath, String imageDir, double rate) {

FFmpegFrameRecorder recorder = null;

boolean flag = true;

try {

File[] files = FileUtils.fileSort(imageDir);

int [] widthArray = new int[files.length];

int [] heightArray = new int[files.length];

/**

* 获取合成视频图片的最大宽高,避免图片比例不一致最终合成效果差

*/

for (int i = 0; i files.length; i++) {

BufferedImage bufferedImage = ImageIO.read(files[i]);

widthArray[i] = bufferedImage.getWidth();

heightArray[i] = bufferedImage.getHeight();

}

/**

* 这个方法主要是防止图片比例达不到视频合成比例的要求,如果达不到下面条件视频则会无法播放

* 图片宽:必须要被32整除

* 图片高:必须要被2整除

*/

int [] maxWH = getImgMaxWH(widthArray,heightArray);

recorder = new FFmpegFrameRecorder(mp4SavePath,maxWH[0],maxWH[1]);

recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);

/**

* 视频质量:目前测试出来的是25-30最清晰,视频质量范围好像是0-40,具体可以自己慢慢测

*/

recorder.setVideoQuality(25);

recorder.setFormat("mp4");

recorder.setFrameRate(rate 0 ? rate : 1);

recorder.setPixelFormat(0);

recorder.start();

OpenCVFrameConverter.ToIplImage conveter = new OpenCVFrameConverter.ToIplImage();

/**

* 合成视频

*/

for(int i = 0; i files.length; i++ ){

opencv_core.IplImage image = cvLoadImage(files[i].getPath());

recorder.record(conveter.convert(image));

opencv_core.cvReleaseImage(image);

}

logger.info("合成成功");

} catch(Exception e) {

e.printStackTrace();

flag = false;

logger.error("合成失败");

} finally {

try {

if (recorder != null){

recorder.stop();

recorder.release();

}

} catch (FrameRecorder.Exception e) {

e.printStackTrace();

}

}

return flag;

}

请教大神,java调用ffmpeg,将两段.wav音频,拼接成一段.wav音频,怎么做?

ffmpeg是c实现的,java想调它的api,起码要写一层jni出来,直接在jni层调用ffmpeg的api,然抛到java层去invoke.

当然还有一种,直接用命令实现,首先你需要编译出可以在你当前环境上运行的ffmpeg,然后配置好拼接音频的参数,使用Runtime的exec来执行这个命令,这种方法虽然简单,但是一旦换个执行环境可能就没有办法使用你本机编译的ffmpeg了,所以不推荐。

如何用Java实现两个文件的拼接

如何用Java实现两个文件的拼接

String类的方法:

①利用运算符"+"

②public String concat(String str)进行字符串的拼接操作

StringBuffer的方法:

①public StringBuffer append(String str)将str添加到当前字符串缓冲区的字符序列的末尾

②public StringBuffer insert(int offset,String str)在当前字符串缓冲区的字符序列的下标

索引offset插入str。如果offset等于旧长度,则str添加在字符串缓冲区的尾部

java8中如何将多个集合的数据拼接成一个统一的流

java8中stream的提供了一个拼接流的方法Stream.concat,可以将两个stream拼接成一个stream, 保持了两个stream中的元素顺序。

那么如果我们需要对多个集合中的元素拼接成一个stream来统一处理,可以怎么做呢?

比如有三个CollectionString c1, c2, c3.

方法一,使用Stream.concat方法来拼接,可以使用一个for循环来处理。

private static StreamString concat1(ListCollectionString collections) {

Stream result = Stream.empty();

for (CollectionString strings : collections) {

              result = Stream.concat(result,  strings.stream());

}

return   result;

}

方法二,使用flatMap方法,将集合变成stream, 再压平

private static StreamString concat2(ListCollectionString collections) {

return  collections.stream()

           .flatMap(Collection::stream);

}

对于不同集合类型的数据,如何做成一个统一的流?还是可以使用flatMap方法来做

方法三:

private static StreamString concat3(ListString s1,String[] s2, SetString s3) {

return  Stream.of(s1.stream(), Arrays.stream(s2), s3.stream())

           .flatMap(Function.identity());

}

方法三和方法二相比,可以使用不同类型的集合类型来拼接流,方法二在拥有共同基类的情况下使用会显得简洁很多。

java视频拼接的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于视频拼接教程、java视频拼接的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。