国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能的詳細(xì)步驟

java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能的詳細(xì)步驟

2021-12-23 12:4232224047_yw Java教程

這篇文章主要介紹了java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能,本文簡(jiǎn)單的展示了java調(diào)用FFmpeg命令實(shí)現(xiàn)視屏的壓縮的詳細(xì)步驟,需要的朋友可以參考下

前言

最近做人臉識(shí)別,對(duì)于過(guò)大的視屏(10M)以上,識(shí)別失敗的幾率比較大。找了下相關(guān)的視屏壓縮資料。首先使用的是jave進(jìn)行視屏壓縮,但是踩坑失敗,jave中有轉(zhuǎn)碼的過(guò)程,雖然壓縮成功,各種壓縮參數(shù)也調(diào)整了一大堆,但是在識(shí)別時(shí),幾乎都不會(huì)成功,但是只是壓縮觀看的話,還是可以使用jave的。繼續(xù)踩坑,直接使用原生的FFmpeg,在windows系統(tǒng)通過(guò)cmd命令,進(jìn)行壓縮,調(diào)整對(duì)應(yīng)的視屏參數(shù),壓縮效果可以,而且可以識(shí)別成功,下面簡(jiǎn)單的展示下java調(diào)用FFmpeg命令實(shí)現(xiàn)視屏的壓縮,僅供參考。

 

實(shí)現(xiàn)步驟

一、在windows系統(tǒng)中下載對(duì)應(yīng)的FFmpeg

然后進(jìn)行安裝

下載地址:

https://github.com/BtbN/FFmpeg-Builds/releases

使用命令行窗口檢驗(yàn)是否安裝成功,調(diào)用命令行(windows+R輸入cmd)輸入“ffmpeg Cversion”,如果出現(xiàn)如下說(shuō)明配置成功。

java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能的詳細(xì)步驟

具體的安裝步驟比較簡(jiǎn)單,這里略過(guò)。

二、FFmpeg壓縮視屏命令

ffmpeg -i 待壓縮文件 -b:v 1.5M  壓縮后的文件
參考:
ffmpeg -i Desktop/1.mov -b:v 1.5M  Desktop/1.mp4
  • -b:v 1.5M : 指定碼率
  • -b:v :指定視頻的碼率
  • -b:a : 指定音頻的碼率
  • 1.5M:碼率的值 1.5M 表示 1.5Mb/s

當(dāng)碼率設(shè)置為小于 1.5Mb/s 后視頻的清晰度會(huì)降低很多

三、java實(shí)現(xiàn)FFmpeg命令調(diào)用

方式一:直接使用runtime.exec()調(diào)用命令,這種調(diào)用方法命令在后臺(tái)執(zhí)行。main方法遍歷文件夾下所有mp4文件,并進(jìn)行壓縮處理,可以根據(jù)自己需求修改代碼。

/*
   * 壓縮視頻
   * @param convertFile  待轉(zhuǎn)換的文件
   * @param targetFile  轉(zhuǎn)換后的目標(biāo)文件
   */
  private static  void toCompressFile(String convertFile,String targetFile){
      try{
          Runtime runtime = Runtime.getRuntime();
          /**將視頻壓縮為 每秒15幀 平均碼率600k 畫(huà)面的寬與高 為1280*720*/
          String cutCmd="ffmpeg -i " + convertFile + " -r 15 -b:v 600k  -s 1280x720 "+ targetFile;
          System.out.println("cutCmd:"+cutCmd);
          runtime.exec(cutCmd);
          System.out.println("文件:"+convertFile+" 正在轉(zhuǎn)換中。。。");
      }catch(Exception e){
          e.printStackTrace();
          System.out.println("壓縮文件出現(xiàn)異常:"+e.getMessage());
      }
  }

  public static void main(String[] ars ){
      long startTime = System.currentTimeMillis();
      final String convertFile="C:\\Users\\issuser\\Desktop\\a\\";
      File f=new File(convertFile);
      File[] fs=f.listFiles();
      for(File ff:fs){
          if(ff.toPath().toString().toLowerCase().endsWith(".mp4")){
              String f1=convertFile+ff.getName();
              String f2=convertFile+"壓縮后_"+ff.getName();
              toCompressFile(f1,f2);
          }
      }
      System.out.println("耗時(shí):"+(System.currentTimeMillis()-startTime));
  }

方式二:
新增方法:runCmd(),在toCompressFile()方法中調(diào)用,取代toCompressFile()方法中的
runtime.exec()方法,換成runCmd()方法后,在代碼程序中就"阻塞",按照代碼執(zhí)行順序依次執(zhí)行,統(tǒng)計(jì)的耗時(shí)時(shí)間就是視屏的壓縮時(shí)間。runCmd()可以直接調(diào)用linux系統(tǒng)中的FFmpeg命令。

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;

public class FFmpegVideo {

  /*
   * 壓縮視頻
   * @param convertFile  待轉(zhuǎn)換的文件
   * @param targetFile  轉(zhuǎn)換后的目標(biāo)文件
   */
  private static  void toCompressFile(String convertFile,String targetFile){
      try{
          Runtime runtime = Runtime.getRuntime();
          /**將視頻壓縮為 每秒15幀 平均碼率600k 畫(huà)面的寬與高 為1280*720*/
          String cutCmd="ffmpeg -i " + convertFile + " -r 15 -b:v 600k  -s 1280x720 "+ targetFile;
          System.out.println("cutCmd:"+cutCmd);
          runCmd(cutCmd);
          System.out.println("文件:"+convertFile+" 視屏壓縮完成");
      }catch(Exception e){
          e.printStackTrace();
          System.out.println("壓縮文件出現(xiàn)異常:"+e.getMessage());
      }
  }

  public static void main(String[] ars ){
      long startTime = System.currentTimeMillis();
      final String convertFile="C:\\Users\\issuser\\Desktop\\a\\";
      File f=new File(convertFile);
      File[] fs=f.listFiles();
      for(File ff:fs){
          if(ff.toPath().toString().toLowerCase().endsWith(".mp4")){
              String f1=convertFile+ff.getName();
              String f2=convertFile+"after_"+ff.getName();
              toCompressFile(f1,f2);
          }
      }
      System.out.println("耗時(shí):"+(System.currentTimeMillis()-startTime));
  }

  /**
   * linux下 ffmpeg命令的執(zhí)行方法
   *
   * @param command 執(zhí)行的命令字符串
   */
  public static void runCmd(String command) {
      try {
          Runtime rt = Runtime.getRuntime();
          Process proc = rt.exec(command);
          InputStream stderr = proc.getErrorStream();
          InputStreamReader isr = new InputStreamReader(stderr);
          BufferedReader br = new BufferedReader(isr);
          String line;
          System.out.println("開(kāi)始執(zhí)行");
          while ((line = br.readLine()) != null){
              System.out.println(line);
          }
          System.out.println("執(zhí)行結(jié)束");
          int exitVal = proc.waitFor();
          System.out.println("Process exitValue: " + exitVal);
      } catch (Throwable t) {
          System.out.println(t);
          t.printStackTrace();
      }

  }
}

執(zhí)行完成及耗時(shí):

java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能的詳細(xì)步驟

壓縮情況:

壓縮前

java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能的詳細(xì)步驟

壓縮后:

java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能的詳細(xì)步驟

 

注意事項(xiàng)

1.文件名

文件名不應(yīng)該包含特殊字符,否則,壓縮識(shí)別可能失敗。

2.視屏參數(shù)

這里只設(shè)置了幀數(shù)和視屏的碼率,其他參數(shù),可以根據(jù)自己需要設(shè)置

到此這篇關(guān)于java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮的文章就介紹到這了,更多相關(guān)java實(shí)現(xiàn)視屏壓縮內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/qq_32224047/article/details/120140140

延伸 · 閱讀

精彩推薦
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒(méi)有升過(guò)級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來(lái)介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開(kāi)發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 中文字幕在线精品 | 综合一区 | 在线国产视频观看 | 在线国产一区二区 | 中文字幕在线免费视频 | 久久免费精品视频 | 视频一区二区三 | 亚洲国产区 | 欧美性猛交一区二区三区精品 | 永久av | 国内外成人在线视频 | 三级av在线| 久久国产视屏 | 欧美日韩国产精品一区 | 久久夜夜 | 日本一区二区三区免费观看 | 国产精品爱久久久久久久 | 成人午夜精品一区二区三区 | 欧美激情国产精品 | 欧美国产精品一区二区三区 | 欧洲精品在线观看 | 亚洲精品一 | 久久精品视频免费观看 | 毛片在线一区二区观看精品 | 超级碰在线视频 | 久久精品欧美 | 日韩视频精品 | 日韩欧美亚洲精品 | 四虎最新网站 | 欧洲精品一区 | 一区二区久久 | 亚洲欧美视频在线 | 一区二区视频 | 青青草国产| 日韩欧美在线不卡 | 91羞羞网站| 久久久精品在线观看 | 欧美aⅴ | 开心久久婷婷综合中文字幕 | 久久国内免费视频 | 久久精品成人 |