java使用ffmpeg處理視頻的方法
FFmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計(jì)算機(jī)程序。采用LGPL或GPL許可證。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。
官網(wǎng)鏈接http://ffmpeg.org/
1.下載并解壓windows版本安裝包
2.windows本地使用命令行測試
1.修改格式測試(轉(zhuǎn)碼)
將需要修改的視頻A.avi 提前放在bin目錄下 在bin目錄下cmd進(jìn)入命令行 輸入命令完成轉(zhuǎn)碼成B.mp4ffmpeg.exe -i A.avi -y B.mp4
2.視頻音頻結(jié)合測試
將需要修改的視頻A.avi和bgm.mp3 提前放在bin目錄下 在bin目錄下cmd進(jìn)入命令行 輸入命令完成合并成8秒的new.aviffmpeg.exe -i A.avi -i bgm.mp3 -t 8 -y new.avi
3.java中建立工具測試類
package com.xc.utils;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class FFMpegTest {private String ffmpegEXE;public FFMpegTest(String ffmpegEXE) {super();this.ffmpegEXE = ffmpegEXE;}public void convertor(String videoInputPath, String videoOutputPath) throws Exception {//ffmpeg -i input.mp4 -y output.aviList<String> command = new ArrayList<>();command.add(ffmpegEXE);command.add('-i');command.add(videoInputPath);command.add('-y');command.add(videoOutputPath);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:ffmpegbinffmpeg.exe');try {ffmpeg.convertor('C:a.mp4', 'C:b.avi');} catch (Exception e) {e.printStackTrace();}}}
package com.xc.utils;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class MergeVideoMp3 {private String ffmpegEXE;public MergeVideoMp3(String ffmpegEXE) {super();this.ffmpegEXE = ffmpegEXE;}public void convertor(String videoInputPath, String mp3InputPath,double seconds, String videoOutputPath) throws Exception {//ffmpeg.exe -i A.avi -i bgm.mp3 -t 7 -y new.aviList<String> command = new ArrayList<>();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 (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) {MergeVideoMp3 ffmpeg = new MergeVideoMp3('C:ffmpegbinffmpeg.exe');try {ffmpeg.convertor('C:a.avi', 'C:bgm.mp3', 7.1, 'C:javaNew.mp4');} catch (Exception e) {e.printStackTrace();}}}
總結(jié)
到此這篇關(guān)于java使用ffmpeg處理視頻的方法的文章就介紹到這了,更多相關(guān)java ffmpeg處理視頻內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP基礎(chǔ)知識(shí)Command對(duì)象講解2. javascript xml xsl取值及數(shù)據(jù)修改第1/2頁3. 解決ajax請(qǐng)求后臺(tái),有時(shí)收不到返回值的問題4. ASP中實(shí)現(xiàn)字符部位類似.NET里String對(duì)象的PadLeft和PadRight函數(shù)5. XHTML 1.0:標(biāo)記新的開端6. jsp+mysql實(shí)現(xiàn)網(wǎng)頁的分頁查詢7. asp知識(shí)整理筆記4(問答模式)8. ASP.NET MVC通過勾選checkbox更改select的內(nèi)容9. JSP 中request與response的用法詳解10. JavaScrip簡單數(shù)據(jù)類型隱式轉(zhuǎn)換的實(shí)現(xiàn)
