博客信息

小程序实战之Ffmpeg介绍

发布时间:『 2019-09-27 03:22』  博客类别:第三方  阅读(1127)

Ffmpeg视音频处理工具简介

应用场景:

播放器:射手影音、暴风影音......

转码工具:格式工厂、剪辑工具......

直播、视频加码、滤镜、水印、特效......

 

 

百度百科介绍:

https://baike.baidu.com/item/ffmpeg/2665727?fr=aladdin

 

官网:

http://ffmpeg.org/documentation.html

 

环境配置及使用命令

jdk环境变量配置相似

 

FFMPEG_HOME=C:\ffmpeg

path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;D:\Program Files (x86)\MySQL\MySQL Server 5.5\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%MAVEN_HOME%\bin;%M2_HOME%\bin;%NODE_HOME%;%NODE_HOME%\node_global;D:\initPath\Git\cmd;C:\Program Files\VisualSVN Server\bin;%PYTHON_HOME%;%PYTHON_HOME%\Scripts;%FFMPEG_HOME%\bin;

 

案例:音频拷贝、音频合并、音频截屏

拷贝命令:

ffmpeg -i 佩恩2.mp4 output.avi

ffmpeg -i 佩恩2.mp4 -an output.avi去掉原有音质

小李飞刀_微信小程序

合并命令:

ffmpeg -i output.avi -i 美丽的夏威夷.mp3 -t 9 -y 新佩恩2.mp4

小李飞刀_微信小程序

音频截屏命令:

ffmpeg -ss 00:00:01 -y -i 新佩恩2.mp4 -vframes 1 新佩恩2视频封面.jpg

 

-y重新覆盖之前的截图

vframes 后面数字代表帧数

小李飞刀_微信小程序


Java代码操作ffmpeg

这里以视频合并为例,其他的原理都一样

package com.javaxl.utils;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/**
 * ffmpeg -i output.avi -i 美丽的夏威夷.mp3 -t 9 -y 新佩恩2.mp4
 * 用Java代码操作ffmpeg达到上面命令操作后的效果
 *
 */
public class FFMpegTest {

	private String ffmpegEXE;
	
	public FFMpegTest(String ffmpegEXE) {
		super();
		this.ffmpegEXE = ffmpegEXE;
	}
	
	public void convertor(String inputAvi, String inputMp3, double time, String outputMp4) throws Exception {
//		ffmpeg -i input.mp4 -y output.avi
		List<String> command = new ArrayList<>();
		command.add(ffmpegEXE);
		
		command.add("-i");
		command.add(inputAvi);
		command.add("-i");
		command.add(inputMp3);
		command.add("-t");
		command.add(String.valueOf(time));
		command.add("-y");
		command.add(outputMp4);
		
		for (String c : command) {
			System.out.print(c + " ");
		}
		
		ProcessBuilder builder = new ProcessBuilder(command);
		Process process = builder.start();
		
		InputStream errorStream = process.getErrorStream();
		InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
		BufferedReader br = new BufferedReader(inputStreamReader);
		
		String line = "";
		while ( (line = br.readLine()) != null ) {
		}
		
		if (br != null) {
			br.close();
		}
		if (inputStreamReader != null) {
			inputStreamReader.close();
		}
		if (errorStream != null) {
			errorStream.close();
		}
		
	}

	public static void main(String[] args) {
		FFMpegTest ffmpeg = new FFMpegTest("C:\\ffmpeg\\bin\\ffmpeg.exe");
		try {
			ffmpeg.convertor("D:\\2019\\media\\output.avi", "D:\\2019\\media\\美丽的夏威夷.mp3", 9, "D:\\2019\\media\\新佩恩2.mp4");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}


小结:很多视频剪辑软件的切割,禁掉原声,添加BGM也就那么一回事!!!


over......


关键字:     微信小程序       ffmpeg  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有