新しいJavaプロジェクトの研究オンラインノート-day14(B)

 

1.2.2ビデオ処理ソリューション 
ビデオにプログラムで処理する方法?
FF MPEGビデオ処理FFはJavaで完成mpeg.exeビデオ通話を扱うことができる実行可能なプログラムです。
Javaでは、あなたは、ランタイム・プロセス・ビルダーのクラスとクラスを使用することができ、外部プログラムを実行するには、2つの方法は、少なくとも一つをマスターする仕事です。このプロジェクトは、FF MPEGビデオ処理が完了している呼び出すためにプロセスビルダーの方法を使用しています。
次のようにプロセスビルダーのテストは以下のとおりです。

[AppleScriptの]  プレーンテキストビューは、 コードをコピー

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

@Test  

  public void testProcessBuilder(){   

     ProcessBuilder processBuilder = new ProcessBuilder(); //  

    processBuilder.command("ping","127.0.0.1");  

     processBuilder.command("ipconfig");   

     //将标准输入流和错误输入流合并,通过标准输入流读取信息 

       processBuilder.redirectErrorStream(true);   

     try {       

     //启动进程       

     Process start = processBuilder.start();     

       //获取输入流    

        InputStream inputStream = start.getInputStream();  

         //转成字符输入流       

     InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"gbk");    

          int len = 1;    

        char[] c = new char[1024];      

      StringBuffer outputString = new StringBuffer();   

         //读取进程输入流中的内容      

      while ((len= inputStreamReader.read(c))!=1) {       

         String s = new String(c,0,len);       

         outputString.append(s);    

            System.out.print(s);     

       }        

    inputStream.close();  

      } catch (IOException e) { 

           e.printStackTrace();  

      }

    }    

@Test  

  public void testFFmpeg(){  

      ProcessBuilder processBuilder = new ProcessBuilder();      

  //定义命令内容    

    List<String> command = new ArrayList<>();   

     command.add("D:\\Program Files\\ffmpeg‐20180227‐fa0c9d6‐win64‐static\\bin\\ffmpeg.exe");  

      command.add("‐i");     

   command.add("E:\\ffmpeg_test\\1.avi");   

     command.add("‐y");//覆盖输出文件  

      command.add("‐c:v");

        command.add("libx264");

command.add("‐s");    

    command.add("1280x720");   

     command.add("‐pix_fmt");   

     command.add("yuv420p");  

      command.add("‐b:a");   

     command.add("63k");    

    command.add("‐b:v");    

    command.add("753k");    

    command.add("‐r");   

     command.add("18");    

    command.add("E:\\ffmpeg_test\\1.mp4");  

      processBuilder.command(command);   

     //将标准输入流和错误输入流合并,通过标准输入流读取信息 

       processBuilder.redirectErrorStream(true);   

     try {     

       //启动进程  

          Process start = processBuilder.start();  

          //获取输入流      

      InputStream inputStream = start.getInputStream();    

        //转成字符输入流       

     InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"gbk");    

        int len = 1;      

      char[] c = new char[1024];  

          StringBuffer outputString = new StringBuffer();   

         //读取进程输入流中的内容       

     while ((len= inputStreamReader.read(c))!=1) {    

            String s = new String(c,0,len);           

     outputString.append(s);    

            System.out.print(s);       

     }       

     inputStream.close();  

      } catch (IOException e) {    

        e.printStackTrace();   

     }   

 }


:コードは上記参照、ツールにパッケージ化された

 
上位ツールクラス:
Mp4VideoUtil.java完全な回転aviファイルのMP4

HlsVideoUtil.java完全なターンHLSのMP4は、
ツールを使用するたびにテストしました。
 

[AppleScriptの]  プレーンテキストビューは、 コードをコピー

01

02

03

04

05

06

07

08

09

10

11

12

13

14

public static void main(String[] args) throws IOException {  

  //ffmpeg的路径   

 String ffmpeg_path = "D:\\Program Files\\ffmpeg‐20180227‐fa0c9d6‐win64static\\bin\\ffmpeg.exe";//ffmpeg的安装位置   

 //源avi视频的路径 

   String video_path = "E:\\ffmpeg_test\\1.avi"

   //转换后mp4文件的名称  

  String mp4_name = "1.mp4";   

 //转换后mp4文件的路径 

   String mp4_path = "E:\\ffmpeg_test\\";  

  //创建工具类对象    

Mp4VideoUtil videoUtil = new Mp4VideoUtil(ffmpeg_path,video_path,mp4_name,mp4_path);  

  //开始视频转换,成功将返回success 

   String s = videoUtil.generateMp4();  

  System.out.println(s); }

おすすめ

転載: blog.csdn.net/czbkzmj/article/details/91802302