`

【转】用java程序调用ffmpeg执行视频文件格式转换flv

阅读更多

用java小例题说明更直观:(可以直接编译运行)
环境我在windows平台下测试的。。。
需要在e:/下有ffmpeg.exe;mencoder.exe;drv43260.dll;pncrt.dll共4个文件。
如何得到这4个文件参考文章http://hanxin0311.iteye.com/admin/blogs/1919481

还要在e:/input下放各种文件名为a的以下各种视频文件;还要e:/output;java程序执行后能得到一个a.flv的已转换的文件。
ffmpeg.exe能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
对ffmpeg.exe无法解析的文件格式(wmv9,rm,rmvb等),
可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式;
mencoder.exe;drv43260.dll;pncrt.dll这3个文件是为文件格式(wmv9,rm,rmvb等)
转换为avi(ffmpeg能解析的)格式准备的;再把转换好的avi文件再用ffmpeg.exe转换成flv格式的视频文件。。。
 
java文件的内容如下:

 

import java.io.File;
import java.util.List;
public class ConvertVideo {
 
 private final static String PATH = "c://test//a.mpg";
 public static void main(String[] args) {
        if(!checkfile(PATH)){
         System.out.println(PATH+" is not file");
         return;
        }       
  if (process()) {                 
            System.out.println("ok");
        }
 }
 
 private static boolean process() {       
  int type = checkContentType();
        boolean status = false;
        if (type==0) {
            status = processFLV(PATH);// 直接将文件转为flv文件           
        } else if (type==1) {
            String avifilepath = processAVI(type);
            if (avifilepath == null)
                return false;// avi文件没有得到
            status = processFLV(avifilepath);// 将avi转为flv
        }
        return status;
    }
    private static int checkContentType() {
        String type = PATH.substring(PATH.lastIndexOf(".") + 1,
          PATH.length()).toLowerCase();
//ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
        if (type.equals("avi")) {
            return 0;
        } else if (type.equals("mpg")) {
            return 0;
        } else if (type.equals("wmv")) {
            return 0;
        } else if (type.equals("3gp")) {
            return 0;
        } else if (type.equals("mov")) {
            return 0;
        } else if (type.equals("mp4")) {
            return 0;
        } else if (type.equals("asf")) {
            return 0;
        } else if (type.equals("asx")) {
            return 0;
        } else if (type.equals("flv")) {
            return 0;
        }
        //对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等), 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
        else if (type.equals("wmv9")) {
            return 1;
        } else if (type.equals("rm")) {
            return 1;
        } else if (type.equals("rmvb")) {
            return 1;
        }       
        return 9;
    }
   
    private static boolean checkfile(String path){
     File file=new File(path);
     if(!file.isFile()){
      return false;
     }
     return true;
    }
//  对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等), 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
    private static String processAVI(int type) {
        List<String> commend=new java.util.ArrayList<String>();
        commend.add("e://mencoder");
        commend.add(PATH);
        commend.add("-oac");
        commend.add("lavc");
        commend.add("-lavcopts");
        commend.add("acodec=mp3:abitrate=64");
        commend.add("-ovc");
        commend.add("xvid");
        commend.add("-xvidencopts");
        commend.add("bitrate=600");
        commend.add("-of");
        commend.add("avi");
        commend.add("-o");
        commend.add("c://home//a.avi");
       
        try{
         ProcessBuilder builder = new ProcessBuilder();
            builder.command(commend);
            builder.start();
            return "c://home//a.avi";
        }catch(Exception e){
         e.printStackTrace();
         return null;
        }
    }
//  ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
    private static boolean processFLV(String oldfilepath) {
     
      if(!checkfile(PATH)){
          System.out.println(oldfilepath+" is not file");
          return false;
         }     
       
        List<String> commend=new java.util.ArrayList<String>();
        commend.add("e://ffmpeg");
        commend.add("-i");
        commend.add(oldfilepath);
        commend.add("-ab");
        commend.add("64");
        commend.add("-acodec");
        commend.add("mp3");
        commend.add("-ac");
        commend.add("2");
        commend.add("-ar");
        commend.add("22050");
        commend.add("-b");
        commend.add("230");
        commend.add("-r");
        commend.add("24");
        commend.add("-y");
        commend.add("c://home//a.flv");
        try {
            ProcessBuilder builder = new ProcessBuilder();
            builder.command(commend);
            builder.start();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
 
}

 

 文章来源:http://blog.csdn.net/xsf_lh/article/details/1693799

 

 

分享到:
评论

相关推荐

    用java程序调用ffmpeg执行视频文件格式转换flv

    在本文中,我们将深入探讨如何使用Java程序调用FFmpeg执行视频文件格式转换,特别是将非FFmpeg原生支持的格式转换为FLV格式。FFmpeg是一个强大的多媒体处理工具,支持多种视频、音频格式的编码、解码和转换。在这个...

    java调用ffmpeg转换视频格式为flv

    Java调用FFmpeg转换视频格式为FLV是一个常见的任务,特别是在开发媒体处理应用程序时。FFmpeg是一个强大的跨平台命令行工具,用于处理音频和视频文件,包括转换、编码、解码、分割等操作。在Java中,我们通常通过...

    java调用ffmpeg转换视频,并读取转换后视频的分辨率、大小以及时长

    java调用ffmpeg转换视频,并读取转换后视频的分辨率、大小以及时长。主要参考http://blog.sina.com.cn/s/blog_a5116c670102wiwj.html 的代码方式。步骤: 1.研究java如何调用外部程序 2.研究ffmpeg转换视频格式的...

    java调用视频转换工具ffmpeg.zip

    总结起来,Java调用FFmpeg进行视频转换是一个涉及多媒体处理的核心技术,它使得Java应用程序能够处理各种视频格式,适应多样化的用户需求。通过学习和实践,开发者可以熟练掌握这一技能,提升其在音视频领域的开发...

    最简单的java调用FFmpeg转换视频格式为FLV的方法

    最简单的java调用FFmpeg转换视频格式为FLV的方法,在win下调用命令提示符。

    详解java调用ffmpeg转换视频格式为flv

    详解java调用ffmpeg转换视频格式为flv 注意:下面的程序是在Linux下运行的,如果在windows下rmvb转换成avi会出现问题,想成功需要下载下个drv43260.dll东西放到C:WindowsSystem32下面 这几天在写一个视频管理系统,...

    java调用ffmpeg 添加水印转换视频

    java调用ffmpeg添加水印并且转换视频,代码中并没有判断哪些格式支持,那些不支持,mpg,mp4,avi,wmv基本都可以(传入格式),转换为flv avi mp4起码都没问题,其它的没事过ffmpeg是开源的支持的挺多的 补充:时间算错了,...

    java把各种视频格式转化为flv

    Java是一种广泛使用的编程语言,它不仅用于开发Web应用程序和企业级系统,还可以处理多媒体处理任务,包括视频格式转换。在本场景中,我们关注的是如何使用Java将各种视频格式转换为FLV(Flash Video)格式。FLV是...

    java用ffmpeg截取视频图片

    Java 结合 FFmpeg 提供了灵活的多媒体处理能力,但需要注意的是,通过命令行调用外部程序可能会有性能开销,因此在处理大量任务时,可以考虑使用 FFmpeg 的 Java 库,如 Xuggle 或 JAVE(Java Audio Video Encoder)...

    java调用视频转换工具ffmpeg[归纳].pdf

    ### Java调用视频转换工具FFmpeg知识点归纳 #### 一、环境配置与文件准备 **1.1 FFmpeg工具的安装与配置** - **下载与安装:** - 首先,确保已经在本地计算机上安装了FFmpeg工具。可以在官方网站上下载适合...

    java封装ffmpeg对视频截图和转格式(含代码)

    本教程将深入讲解如何使用Java进行FFmpeg的封装,实现视频截图和格式转换功能,特别关注将视频转换为FLV格式。 首先,你需要在项目中引入FFmpeg的Java绑定库,如`javacpp-presets/ffmpeg`。这个库提供了与FFmpeg...

    java调用ffmpeg实现视频转换的方法

    Java调用FFmpeg实现视频转换涉及到Java编程语言和FFmpeg多媒体处理工具的使用。FFmpeg是一个非常强大的命令行工具,支持几乎所有的视频文件格式转换。在Java中调用FFmpeg,通常使用Runtime或者ProcessBuilder类来...

    ffmpeg 视频格式转换 透明水印 demo

    3. **Java调用FFmpeg**: - 在Java中,我们可以使用`Runtime.getRuntime().exec()`方法来执行系统命令,包括FFmpeg命令。 - 更高级的方法是使用第三方库,如`Xuggle`或`JAVE2`,它们提供了更方便的Java接口来操作...

    利用ffmpeg视频转换处理

    3. **Java调用FFmpeg** 在Java中,有两种主要方式调用FFmpeg: - **使用Runtime.exec()**:直接执行FFmpeg命令,例如: ```java Process process = Runtime.getRuntime().exec("ffmpeg -i input.mp4 output.flv...

    java web ffmpeg memcoder视频转换为flash

    3. Java调用FFmpeg:在Java Web环境中,直接使用FFmpeg通常通过执行系统命令来实现,即使用Java的Runtime类或者ProcessBuilder类来调用`ffmpeg.exe`。压缩包内的`java调用视频转换工具ffmpeg.doc`应该包含了如何在...

    Java视频转换FLV

    Java视频转换FLV是一项在IT领域中常见的任务,主要用于将不同格式的视频文件转换为FLV(Flash Video)格式,这种格式广泛应用于网络流媒体播放。在这个过程中,我们通常会用到开源工具FFmpeg,它是一个强大的命令行...

    JAVA 利用 ffmpeg 和 mencoder 对视频进行转换

    以下是一个简单的示例,展示如何使用Java调用FFmpeg进行视频转换: ```java import java.io.IOException; public class VideoConverter { public static void main(String[] args) { String inputFilePath = ...

    Java实现文件格式转换代码实例

    Java作为一种广泛使用的编程语言,提供了多种方式来实现文件格式的转换。本实例聚焦于Java如何实现AMR到MP3的转换,同时,该方法同样适用于其他类型的格式转换,如视频格式FLV转MP4。我们将探讨使用JAVE库、FTP协议...

    java源码转换FLV

    总结来说,这个Java源码转换FLV的项目是利用Java编程语言和相关库实现的视频转换工具,它可以将源视频文件转化为适用于网络播放的FLV格式。理解和使用这个项目,你需要熟悉Java编程、视频处理概念以及可能涉及的第三...

Global site tag (gtag.js) - Google Analytics