日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

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

發(fā)布時(shí)間:2023/12/10 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 avi和音频合成 ffmpeg_使用Java和ffmpeg把音频和视频合成视频的操作方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

FFmpeg是一個(gè)開(kāi)源免費(fèi)跨平臺(tái)的視頻和音頻流方案,屬于自由軟件,采用LGPL或GPL許可證(依據(jù)你選擇的組件)。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。它包含了非常先進(jìn)的音頻/視頻編解碼庫(kù)libavcodec,為了保證高可移植性和編解碼質(zhì)量,libavcodec里很多codec都是從頭開(kāi)發(fā)的。

FFmpeg是一套可以用來(lái)記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開(kāi)源計(jì)算機(jī)程序。它包括了目前領(lǐng)先的音/視頻編碼庫(kù)libavcodec。 FFmpeg是在Linux下開(kāi)發(fā)出來(lái)的,但它可以在包括Windows在內(nèi)的大多數(shù)操作系統(tǒng)中編譯。這個(gè)項(xiàng)目是由Fabrice Bellard發(fā)起的,現(xiàn)在由Michael Niedermayer主持。可以輕易地實(shí)現(xiàn)多種視頻格式之間的相互轉(zhuǎn)換,例如可以將攝錄下的視頻avi等轉(zhuǎn)成現(xiàn)在視頻網(wǎng)站所采用的flv格式

主要功能:

1、視頻格式轉(zhuǎn)換功能

ffmpeg視頻轉(zhuǎn)換功能。視頻格式轉(zhuǎn)換,比如可以將多種視頻格式轉(zhuǎn)換為flv格式,可不是視頻信號(hào)轉(zhuǎn)換? 。

ffmpeg可以輕易地實(shí)現(xiàn)多種視頻格式之間的相互轉(zhuǎn)換(wma,rm,avi,mod等),例如可以將攝錄下的視頻avi等轉(zhuǎn)成現(xiàn)在視頻網(wǎng)站所采用的flv格式。

2、視頻截圖功能

對(duì)于選定的視頻,截取指定時(shí)間的縮略圖。視頻抓圖,獲取靜態(tài)圖和動(dòng)態(tài)圖,不提倡抓gif文件;因?yàn)樽コ龅膅if文件大而播放不流暢

3、給視頻加水印功能

使用ffmpeg 視頻添加水印(logo)。

好了,下面開(kāi)始今天的正文。

借助第三方工具ffmpeg合成視頻

需求:在小破站上下載了一些視頻,但是放到電腦里面看,我擦,聲音文件和視頻文件是分開(kāi)的。

正確安裝ffmpeg并配置好環(huán)境變量。

Java代碼測(cè)試

里面是下載的視頻和音頻

我就上代碼遞歸了,只要用正確的ffmpeg的命令和Java調(diào)用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();

}

}

/**

* 具體合成視頻函數(shù)

* @param videoInputPath

* 原視頻的全路徑

*

* @param audioInputPath

* 音頻的全路徑

*

* @param videoOutPath

* 視頻與音頻結(jié)合之后的視頻的路徑

*/

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);

// 用來(lái)收集錯(cuò)誤信息的

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();

}

}

}

// 遞歸函數(shù)

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個(gè)完整的視頻。體會(huì)了遞歸的強(qiáng)大。

總結(jié)

到此這篇關(guān)于使用Java和ffmpeg把音頻和視頻合成視頻的操作方法的文章就介紹到這了,更多相關(guān)java ffmpeg音頻合成視頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

總結(jié)

以上是生活随笔為你收集整理的avi和音频合成 ffmpeg_使用Java和ffmpeg把音频和视频合成视频的操作方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。