怎么在java中使用ffmpeg处理视频
这篇文章将为大家详细讲解有关怎么在java中使用ffmpeg处理视频,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
1.下载并解压windows版本安装包
2.windows本地使用命令行测试
1.修改格式测试(转码)
将需要修改的视频A.avi 提前放在bin目录下
在bin目录下cmd进入命令行
输入命令完成转码成B.mp4
ffmpeg.exe -i A.avi -y B.mp4
2.视频音频结合测试
将需要修改的视频A.avi和bgm.mp3 提前放在bin目录下
在bin目录下cmd进入命令行
输入命令完成合并成8秒的new.avi
ffmpeg.exe -i A.avi -i bgm.mp3 -t 8 -y new.avi
3.java中建立工具测试类
packagecom.xc.utils; importjava.io.BufferedReader; importjava.io.InputStream; importjava.io.InputStreamReader; importjava.util.ArrayList; importjava.util.List; publicclassFFMpegTest{ privateStringffmpegEXE; publicFFMpegTest(StringffmpegEXE){ super(); this.ffmpegEXE=ffmpegEXE; } publicvoidconvertor(StringvideoInputPath,StringvideoOutputPath)throwsException{ // ffmpeg-iinput.mp4-youtput.avi Listcommand=newArrayList<>(); command.add(ffmpegEXE); command.add("-i"); command.add(videoInputPath); command.add("-y"); command.add(videoOutputPath); for(Stringc:command){ System.out.print(c+""); } ProcessBuilderbuilder=newProcessBuilder(command); Processprocess=builder.start(); InputStreamerrorStream=process.getErrorStream(); InputStreamReaderinputStreamReader=newInputStreamReader(errorStream); BufferedReaderbr=newBufferedReader(inputStreamReader); Stringline=""; while((line=br.readLine())!=null){ } if(br!=null){ br.close(); } if(inputStreamReader!=null){ inputStreamReader.close(); } if(errorStream!=null){ errorStream.close(); } } publicstaticvoidmain(String[]args){ FFMpegTestffmpeg=newFFMpegTest("C:\\ffmpeg\\bin\\ffmpeg.exe"); try{ ffmpeg.convertor("C:\\a.mp4","C:\\b.avi"); }catch(Exceptione){ e.printStackTrace(); } } }
packagecom.xc.utils; importjava.io.BufferedReader; importjava.io.InputStream; importjava.io.InputStreamReader; importjava.util.ArrayList; importjava.util.List; publicclassMergeVideoMp3{ privateStringffmpegEXE; publicMergeVideoMp3(StringffmpegEXE){ super(); this.ffmpegEXE=ffmpegEXE; } publicvoidconvertor(StringvideoInputPath,Stringmp3InputPath, doubleseconds,StringvideoOutputPath)throwsException{ // ffmpeg.exe-iA.avi-ibgm.mp3-t7-ynew.avi Listcommand=newArrayList<>(); command.add(ffmpegEXE); command.add("-i"); command.add(videoInputPath); command.add("-i"); command.add(mp3InputPath); command.add("-t"); command.add(String.valueOf(seconds)); command.add("-y"); command.add(videoOutputPath); // for(Stringc:command){ // System.out.print(c+""); // } ProcessBuilderbuilder=newProcessBuilder(command); Processprocess=builder.start(); InputStreamerrorStream=process.getErrorStream(); InputStreamReaderinputStreamReader=newInputStreamReader(errorStream); BufferedReaderbr=newBufferedReader(inputStreamReader); Stringline=""; while((line=br.readLine())!=null){ } if(br!=null){ br.close(); } if(inputStreamReader!=null){ inputStreamReader.close(); } if(errorStream!=null){ errorStream.close(); } } publicstaticvoidmain(String[]args){ MergeVideoMp3ffmpeg=newMergeVideoMp3("C:\\ffmpeg\\bin\\ffmpeg.exe"); try{ ffmpeg.convertor("C:\\a.avi","C:\\bgm.mp3",7.1,"C:\\javaNew.mp4"); }catch(Exceptione){ e.printStackTrace(); } } }
关于怎么在java中使用ffmpeg处理视频就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
推荐阅读
java fileinputstream中文乱码如何解决
javafileinputstream中文乱码如何解决今天小编给...
java实现点赞功能
java实现简单点赞功能
java实现收藏功能
java输入空行结束问题怎么解决
Java线程中常用的操作有哪些
java输入时怎么通过回车来结束输入
java输入时怎么通过回车来结束输入这篇文章主要介绍“java输入...
Java数据结构之线索化二叉树怎么实现
Java数据结构之线索化二叉树怎么实现这篇文章主要介绍“Java数...
Java中的泛型怎么理解
Java中的泛型怎么理解本篇内容介绍了“Java中的泛型怎么理解”...
Java字符串编码解码性能怎么提升
Java字符串编码解码性能怎么提升这篇“Java字符串编码解码性能...