`

Java调用linux命令ffmpeg视频转码

阅读更多
Java调用linux命令ffmpeg视频转码

java.io.*;
import java.lang.*;
import java.util.*;
import java.text.*;
import java.net.*;
public class MediocreExecJavac
{
 //运行命令
 public 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 = null;
            System.out.println("<ERROR>");
            while ( (line = br.readLine()) != null)
                System.out.println(line);
            System.out.println("</ERROR>");
            int exitVal = proc.waitFor();
            System.out.println("Process exitValue: " + exitVal);
        } catch (Throwable t)
  {
   t.printStackTrace();
  }
 }
 
 //视频转码,infile输入文件(包括完整路径),outfile输出文件
 public boolean transfer(String infile,String outfile){
  String avitoflv = "ffmpeg -i "+infile+" -ar 22050 -ab 56 -f flv -y -s 320x240 "+outfile;
  String flvto3gp = "ffmpeg -i " + infile + " -ar 8000 -ac 1 -acodec amr_nb -vcodec h263 -s 176x144 -r 12 -b 30 -ab 12 " + outfile;
  String avito3gp = "ffmpeg -i " + infile + " -ar 8000 -ac 1 -acodec amr_nb -vcodec h263 -s 176x144 -r 12 -b 30 -ab 12 " + outfile;
  //avi -> jpg
  String avitojpg = "ffmpeg -i " + infile + " -y -f image2 -ss 00:00:10 -t 00:00:01 -s 350x240 " + outfile;
  try
        {            
            Runtime rt = Runtime.getRuntime();
   Process proc = rt.exec(avitoflv);
   InputStream stderr = proc.getErrorStream();
            InputStreamReader isr = new InputStreamReader(stderr);
            BufferedReader br = new BufferedReader(isr);
            String line = null;
            System.out.println("<ERROR>");
            while ( (line = br.readLine()) != null)
                System.out.println(line);
            System.out.println("</ERROR>");
            int exitVal = proc.waitFor();
            System.out.println("Process exitValue: " + exitVal);
        } catch (Throwable t)
  {
   t.printStackTrace();
   return false;
  }
  return true;
 }
 
 //读取文件,fileName输入文件,id行数
 public static String readFile(String fileName,int id)
 {
  String dataStr = "";
  FileInputStream fis = null;
  try
  {
   FileReader file = new FileReader(fileName);//建立FileReader对象,并实例化为fr
   BufferedReader br=new BufferedReader(file);//建立BufferedReader对象,并实例化为br
   int i=1;
   String Line=br.readLine();//从文件读取一行字符串
   //System.out.println("Line1="+Line+"="+Line);
   //判断读取到的字符串是否不为空
   //while(Line!=null){
    //System.out.println(Line + "<br>");//输出从文件中读取的数据
    //if(i==line){dataStr=Line;break;}else{i=i+1;}
    //Line=br.readLine();//从文件中继续读取一行数据
   //}
   dataStr=Line;
   br.close();//关闭BufferedReader对象
  }
  catch(Exception e){
  }finally{
   try
   {
    if(fis!=null)
       fis.close();
   }catch(Exception e){}
  }
  return dataStr;
   }

   //读时长信息
 public String readtime(String file)
 {
  String str="/opt/cgogo/test/info.txt";
  String timelen = "";
  String cmd = "timelen "+file;
  runCmd(cmd);
  timelen=readFile(str,1);

  return timelen;
 }

    public static void main(String args[])
    {
  MediocreExecJavac me = new MediocreExecJavac();
  String infile = "/opt/cgogo/test/02.avi";
  String outfile = "01.flv";

  //时长
  String timelen = me.readtime(infile);
  System.out.println("02.avi timelen is :" + timelen);
  //转码
  if(me.transfer(infile,outfile)){
   System.out.println("the transfer is ok!");
  }else{
   System.out.println("the transfer is error!");
  }
    }
}

 

分享到:
评论

相关推荐

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

    总结来说,通过Java调用FFmpeg和Mencoder进行视频格式转换,需要理解这两个工具的命令行语法,以及如何在Java中执行外部进程。此过程涉及到文件类型的检查、预处理转换(如果必要)、最终的格式转换以及错误处理,...

    linux下Java视频转码、截图开发包:ffmepg3-opencv-javacpp-javacv-centos6&7

    JAVA视频操作的最常用工具包的linux开发库,支持在linux下java调用ffmpeg进行视频操作、转码、截图等操作。如果你自己编译、寻找库费了很长时间而不成功,那么,希望这个资源能够帮到你。 里面的jar及linux动态库,...

    java用ffmpeg截取视频图片

    总结来说,Java 使用 FFmpeg 实现视频截图和处理的关键在于理解 FFmpeg 的命令行语法,以及如何在 Java 中调用这些命令。这使得开发者能够在各种平台上高效地处理多媒体内容,满足各种视频截图、剪辑和转换的需求。

    javacv1.41-ffmpeg

    FFmpeg是一个强大的多媒体处理工具,广泛应用于视频转码、格式转换、流媒体处理等领域。 在JavaCV中,FFmpeg的支持使得开发者能够利用其强大的功能来处理Java应用程序中的视频数据。例如,你可以使用JavaCV的...

    java ffmpeg视频转换

    总之,Java FFmpeg视频转换涉及了多媒体处理的基本原理和Java调用外部进程的技术。理解FFmpeg的组件和命令结构,以及如何在Java中正确地执行和处理FFmpeg命令,是成功实现这一功能的关键。遇到问题时,参考社区资源...

    Java 使用javaCV、ffmpeg拉流H265 RTSP转推H264 RTMP可获取流访问人数(源代码)

    6)、linux系统支持推流前系统资源限制。 7)、完整的日志输出,便于查看项目运行状况。 5、ffmpeg需要下载linux版本程序,并将路径添加至系统环境,像配置java环境一样。 6、本程序仅供学习交流,请勿用于任何...

    java封装ffmpeg截取视频图片

    FFmpeg是一个跨平台的解决方案,用于处理多媒体数据,包括视频转码、视频剪辑、视频截图以及音频处理等功能。本文将详细介绍如何在Java中使用封装的FFmpeg库进行视频截图、视频剪辑和视频转换,并讨论其支持的编码...

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

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

    java任意音频格式转码

    1. **Java调用系统命令**:通过Java的Runtime类或者ProcessBuilder类,可以执行操作系统级别的命令,包括运行ffmpeg。例如,你可以构建一个包含ffmpeg转换命令的字符串,然后通过`Runtime.getRuntime().exec(command...

    Java调用ffmpeg3.x操作视频、视频截图完整开发工具包-Win 64位版,含所需DLL文件

    JAVA视频操作的最常用工具包的Windows环境开发运行库,支持在Windows下java调用ffmpeg进行视频操作、转码、截图等操作。如果你自己编译、寻找库费了很长时间而不成功,那么,希望这个资源能够帮到你。 Linux对应的...

    ffmpeg服务器转换视频切片上传oss服务

    ffmpeg服务器转换视频切片上传oss服务,ffmpeg将mp4视频转m3u8、ts,上传oss实现项目视频分片加载,防用户下载

    javacv-ffmpeg-1.3.zip

    通过这些jar文件,Java开发者可以利用JavaCV和FFmpeg的强大功能,实现跨平台的音视频处理,包括但不限于音视频的编码、解码、转码、帧提取、音视频同步、实时流处理等多种任务。此外,JavaCV还提供了高级接口,简化...

    ffmpeg Linux安装文件

    FFmpeg 是一个强大的开源工具集,用于处理音频和视频文件,包括编码、解码、转换、流媒体等任务。...通过Java调用FFmpeg,可以方便地将这些功能集成到自己的应用程序中,实现如视频格式转换和截图等需求。

    FFmpeg使用手册(FFmpeg官方文档中文翻译)

    - 包管理器安装:Linux系统下可使用apt、yum等包管理器进行安装。 综上所述,FFmpeg使用手册(FFmpeg官方文档中文翻译)提供了全面的FFmpeg使用指南,无论是初学者还是经验丰富的开发者,都能从中受益,快速掌握...

    ffmpeg安装步骤

    linux 系统下安装ffmpeg 视频转码功能的步骤问题,java开发

    ffmpeg获取视频时长

    根据提供的文件信息,我们可以深入探讨如何使用FFmpeg来获取视频的关键属性,如视频时长、码率、编码格式、分辨率以及音频的相关信息,并且通过Java编程语言实现这一过程。 ### FFmpeg简介 FFmpeg是一个非常强大的...

    java实现音视频转码

    中档中包含linux安装yasm环境,ffmpeg工具,lame解码器,以及环境报错解决方案,如何使用jave包maven导入pom配置,java代码帮你实现转换拷入有效,以及所有工具的下载地址,让你不走弯路5分钟解决音视频转码问题,...

    视频转码安装包.rar

    在实际应用中,开发者通常会使用Java的Runtime类或者第三方库如JNA(Java Native Access)来调用FFmpeg的命令行工具进行视频转码操作。具体步骤可能包括以下部分: 1. **安装和配置**: 首先,需要解压所有文件,并...

    一个简单的SSH视频转码

    总结起来,这个项目展示了如何在Java Web环境中利用SSH框架构建一个视频转码服务,通过ffmpeg将各种格式的视频转换成适合网络播放的FLV格式。对于开发者来说,理解SSH框架的运作原理,掌握ffmpeg的使用,以及如何在...

    javacv-1.1-linux

    例如,你可以构建一个视频监控系统,通过JavaCV实时检测画面中的特定目标,或者创建一个音视频转码服务,将不同格式的媒体文件转换为统一格式。 7. 整合到项目中: 将这些jar包添加到Java项目的类路径中,即可开始...

Global site tag (gtag.js) - Google Analytics