avi和音频合成 ffmpeg_使用Java和ffmpeg把音频和视频合成视频的操作方法

FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec。 FFmpeg是在Linux下开发出来的,但它可以在包括Windows在内的大多数操作系统中编译。这个项目是由Fabrice Bellard发起的,现在由Michael Niedermayer主持。可以轻易地实现多种视频格式之间的相互转换,例如可以将摄录下的视频avi等转成现在视频网站所采用的flv格式

主要功能:

1、视频格式转换功能

ffmpeg视频转换功能。视频格式转换,比如可以将多种视频格式转换为flv格式,可不是视频信号转换  。

ffmpeg可以轻易地实现多种视频格式之间的相互转换(wma,rm,avi,mod等),例如可以将摄录下的视频avi等转成现在视频网站所采用的flv格式。

2、视频截图功能

对于选定的视频,截取指定时间的缩略图。视频抓图,获取静态图和动态图,不提倡抓gif文件;因为抓出的gif文件大而播放不流畅

3、给视频加水印功能

使用ffmpeg 视频添加水印(logo)。

好了,下面开始今天的正文。

借助第三方工具ffmpeg合成视频

需求:在小破站上下载了一些视频,但是放到电脑里面看,我擦,声音文件和视频文件是分开的。

正确安装ffmpeg并配置好环境变量。

Java代码测试

里面是下载的视频和音频

我就上代码递归了,只要用正确的ffmpeg的命令和Java调用ffmpeg.exe的程序,就可以合成啦。

package com.lovely.test;

import java.io.BufferedReader;

import java.io.File;

//import java.io.FileInputStream;

//import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.UUID;

/**

*

* 视频中获取音频文件

*

*/

public class TestFfmpeg {

// FFmpeg全路径

private static final String FFMPEG_PATH = "D:\\softWare\\tools\\joyTool\\ffmpeg\\bin\\ffmpeg.exe";

public static void main(String[] args) {

String path = "E:\\StudyVedio\\ComputerScience\\US";

try {

getAll(path);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 具体合成视频函数

* @param videoInputPath

* 原视频的全路径

*

* @param audioInputPath

* 音频的全路径

*

* @param videoOutPath

* 视频与音频结合之后的视频的路径

*/

public static void convetor(String videoInputPath, String audioInputPath, String videoOutPath)

throws Exception {

Process process = null;

InputStream errorStream = null;

InputStreamReader inputStreamReader = null;

BufferedReader br = null;

try {

// ffmpeg命令

String command = FFMPEG_PATH + " -i " + videoInputPath + " -i " + audioInputPath

+ " -c:v copy -c:a aac -strict experimental " +

" -map 0:v:0 -map 1:a:0 "

+ " -y " + videoOutPath;

process = Runtime.getRuntime().exec(command);

errorStream = process.getErrorStream();

inputStreamReader = new InputStreamReader(errorStream);

br = new BufferedReader(inputStreamReader);

// 用来收集错误信息的

String str = "";

while ((str = br.readLine()) != null) {

System.out.println(str);

}

process.waitFor();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (br != null) {

br.close();

}

if (inputStreamReader != null) {

inputStreamReader.close();

}

if (errorStream != null) {

errorStream.close();

}

}

}

// 递归函数

public static void getAll(String path) throws Exception {

String videoInputPath = "";

String audioInputPath = "";

String videoOutPath = "";

File file = new File(path);

if (file.isDirectory()) {

File[] files = file.listFiles();

for (File f : files) {

getAll(f.getPath());

if (f.isFile()) {

if (f.getName().endsWith(".m4s")) {

if (f.getName().endsWith("audio.m4s"))

audioInputPath = file.getPath() + "\\audio.m4s";

if (f.getName().endsWith("video.m4s"))

videoInputPath = file.getPath() + "\\video.m4s";

videoOutPath = file.getPath() + "\\all.mp4";

if (!videoInputPath.equals(""))

convetor(videoInputPath, audioInputPath, videoOutPath);

}

}

}

}

}

}

我最后用了好几分钟合成了30个完整的视频。体会了递归的强大。

总结

到此这篇关于使用Java和ffmpeg把音频和视频合成视频的操作方法的文章就介绍到这了,更多相关java ffmpeg音频合成视频内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html input file name,HTML Input FileUpload name用法及代码示例

name属性用于设置或返回文件上传按钮的name属性的值。名称属性用于在提交到服务器后标识表单数据。用法:返回名称属性:fileuploadObject.name设置名称属性:fileuploadObject.namename属性值:name:指定文件上传按钮的名称。示例1:返…

PS教程第三课:PS界面

ctrl 移动 滚轮 多种命令

洛谷 P1589 泥泞路 2019青岛市竞赛(贪心)

题目链接 https://www.luogu.org/problemnew/show/P1589 解题思路 用结构体存下每一段泥泞路的左端点和右端点,然后用sort根据左端点排序,采用贪心的思想,从左往右遇到未覆盖的点ans,然后去覆盖l的长度,这时现在覆盖到…

坡度土方计算案例_土石方工程造价中的细节解析(案例+计算式)

每个房建工程都避不开土石方工程,许多人知道怎样算量,也知道怎样组价,但是却有很多小细节的注意点被忽略,现将土石方工程从算量到组价的全过程整理,希望对大家深刻理解土石方规则,掌握手算及软件算技巧、组…

能测试快充真假的软件,苹果iOS 12可自行测试真假快充:山寨充电器将被洗牌

苹果2018新品发布会临近,有爆料称本次苹果将带来三款新机并且推出最新的系统版本iOS 12。近期,苹果也接连推送了多个iOS 12 Beta版本供大家尝鲜,截止目前,已经更新到了iOS12 Beta9。(iOS12 Beta9升级教程)在更新iOS 12 Beta9之后&…

MM看过来!教你如何打扮变成时尚达人 - 生活至上,美容至尚!

发色选择红色铜色珊瑚色等亮色,衣着选择大红粉红等亮色. 让脸变白的方法 : 1.要睡觉的时候,拿小黄瓜切雹放置脸上过几分钟拿下来,一个月您的脸就会 白嫩。 2.睡前用最便宜的化妆棉加上化妆水完全浸湿后,敷在脸上20分钟,每周3 次&a…

P1078 文化之旅[最短路]

题目背景 本题是错题,后来被证明没有靠谱的多项式复杂度的做法。测试数据非常的水,各种玄学做法都可以通过(比如反着扫),不代表算法正确。因此本题题目和数据仅供参考。 题目描述 有一位使者要游历各国,他每…

小学生计算机课堂实践的重要性,浅谈小学信息技术教育重要性.doc

浅谈小学信息技术教育重要性浅谈小学信息技术教育重要性   随着科技的发展,信息技术与人们的生活息息相关。我们通过不同的技术手段,获取我们生活、工作和学习中所需要的一切信息,而作为教授人们认识信息及使用技术获取、编辑、传递信息基础…

安卓真机如何连接本地服务器_一分钟搭建可供手机访问的本地服务器 (安卓,ios手机通用)...

我们在做安卓或者ios开发时,开发阶段会用手机访问本地服务器,而本地服务器开发阶段也是部署在后台开发的电脑上。mac或者window电脑的本地服务器。下面就来实现手机访问mac或者window本地服务器。实现步骤如下1,手机和电脑必须连在同一个wifi…

人生命运

命运字面上意义是指生命的经历。命指生命,运即经验历程。宿命论者相信命运不可以改写,因为人不可窥探预知命运,命运存在任何的角落上,只是无法接触。命运只是个人的主观意识观念而已。命运,是时间的唯一性和不可逆转性…

PS教程第五课:套索工具进行抠图

直接点击套索工具 新建图层 选中选区

BZOJ 4278: [ONTAK2015]Tasowanie 后缀数组 + 贪心 + 细节

Description 给定两个数字串A和B&#xff0c;通过将A和B进行二路归并得到一个新的数字串T&#xff0c;请找到字典序最小的T。Input 第一行包含一个正整数n(1<n<200000)&#xff0c;表示A串的长度。第二行包含n个正整数&#xff0c;其中第i个数表示A[i](1<A[i]<1000…

.net宿舍管理系统 mysql_基于.NET CORE的精美后台管理系统-RuoYi C#版

若依(RuoYi)是码云上一款精美的开源快速开发平台&#xff0c;作者毫无保留给个人及企业免费使用。RuoYi目前有三个版本&#xff1a;普通版本(RuoYi)、前后端分离版本(RuoYi-Vue)、微服务版本(RuoYi-Cloud)。.net的小伙伴们估计很羡慕JAVA的生态&#xff0c;现在.net core发展也…

计算机蓝屏 代码0000a,win7 64位系统蓝屏代码0x0000000a的原因及解决方法

广大win7系统用户都有过由于操作失误或是遭到病毒侵袭导致的电脑蓝屏情况&#xff0c;蓝屏是微软的 Windows 系列操作系统在无法从一个系统错误中恢复过来时&#xff0c;为保护电脑数据文件不被破坏而强制显示的屏幕图像。蓝屏对我们正常使用电脑造成的影响很大&#xff0c;有用…

Asp.net面试题

1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答: private : 私有成员, 在类的内部才可以访问。 protected : 保护成员&#xff0c;该类内部和继承类中可以访问。 public : 公共成员&#xff0c;完全公开&#xff0c;没有访问限制。 internal: 在同…

PS教程第六课:魔棒工具进行抠图

点击魔棒工具进行抠图 选中选区 点击查看

scratch少儿编程第一季——07、人要衣装佛靠金装——外观模块

各位小伙伴大家好&#xff1a; 上期我们学习了如何设置背景&#xff0c;和设计一个小项目总结了动作模块。 本期开始我们学习外观模块下的指令。 首先我们来看看前面两个指令 第一个指令是在角色对象上出现一个对话框&#xff0c;显示角色所说的话。 后面有一个时间参数&#x…

计算机windows无响应,Windows电脑便笺没反应不能用了怎么办?

原标题&#xff1a;Windows电脑便笺没反应不能用了怎么办&#xff1f;Windows系统是很多人工作和生活中常用的电脑系统。Windows电脑具备自带的便签工具&#xff0c;就是便笺。它可以通过桌面便利贴的形式存放在电脑桌面上&#xff0c;查看和编辑待办记事内容。然而有时候Windo…