各种视频格式转换成.flv格式(flv格式转换)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:
flv格式转换--第一步
不定期更新...
 
首先要安装MediaCoder
安装目录假设为D:\flv\MediaCoder
在D:\flv\MediaCoder\codecs目录下有一些要用到的,如ffmpeg.exe , mencoder.exe还有一些dll
 
ConvertVideo.java
package com.lichen.test; 

import java.io.File; 
import java.util.List; 

public  class ConvertVideo { 

   private  final  static String PATH =  "d:\\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文件 
      status=processImg(); 
        processFLV(PATH); 
    }  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");        //     D:\flv\MediaCoder\codecs 
    commend.add( "d:\\flv\\MediaCoder\\codecs");    
    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( "d:\\test\\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( "d:\\flv\\MediaCoder\\codecs\\ffmpeg.exe");    
    commend.add( "-i"); 
    commend.add(oldfilepath); 
    commend.add( "-ab"); 
    commend.add( "64"); 
//    commend.add(" -acodec "); 
//    commend.add("codec"); 
    commend.add( "-ac"); 
    commend.add( "2"); 
    commend.add( "-ar"); 
    commend.add( "22050"); 
    commend.add( "-b"); 
    commend.add( "230"); 
//    commend.add("-s"); 
//    commend.add("350x240"); 
    commend.add( "-r"); 
    commend.add( "29.97"); 
    commend.add( "-y"); 
    commend.add( "d:\\test\\b.flv"); 
    System.out.println(commend); 
     try { 
      ProcessBuilder builder =  new ProcessBuilder(); 
      builder.command(commend); 
      builder.start(); 
       return  true
    }  catch (Exception e) { 
      e.printStackTrace(); 
       return  false
    } 
  } 

// 生成图片 参数String newfilename, String newimg 
   public  static  boolean processImg() { 
//    System.out.println(newfilename + "->" + newimg); 
    List<String> commend =  new java.util.ArrayList<String>(); 
    commend.add( "d:\\flv\\MediaCoder\\codecs\\ffmpeg.exe"); 
    commend.add( "-i"); 
    commend.add( "d:\\test\\a.mpg"); 
    commend.add( "-y"); 
    commend.add( "-f"); 
    commend.add( "image2"); 
    commend.add( "-ss"); 
    commend.add( "38"); 
    commend.add( "-t"); 
    commend.add( "0.001"); 
    commend.add( "-s"); 
    commend.add( "320x240"); 
    commend.add( "d:\\test\\b.jpg"); 
     try { 
      ProcessBuilder builder =  new ProcessBuilder(); 
      builder.command(commend); 
      builder.start(); 
       return  true
    }  catch (Exception e) { 
      e.printStackTrace(); 
       return  false
    } 
  } 

    

会在指定目录下D:\test生成b.flv和b.jpg这两个文件.
 
以上为第一步,是最简单的.以后有进展不定期更新...


本文转自chainli 51CTO博客,原文链接:http://blog.51cto.com/lichen/159942,如需转载请自行联系原作者
相关文章
|
流计算 计算机视觉 索引
使用ffmpeg将视频转成HLS(m3u8)格式
HLS (HTTP Live Streaming)是苹果推出的视频流协议,HLS格式的视频包含一个m3u8文本文件,以及众多的.ts的视频片段,而m3u8文本文件的作用就是将这些ts片段索引起来。 因为HLS协议是将视频切分成很多小的ts片段,这些小片段很适合放到cdn上,有很多视频文章都使用了hls格式传输视频。今天我在这里教大家如何用ffmpeg将mp4格式的视频转为HLS(m3u8)格式。
682 0
|
存储 编解码 API
FLV格式解析
FLV(Flash Video)是现在非常流行的流媒体格式,由于其视频文件体积轻巧、封装播放简单等特点,使其很适合在网络上进行应用,目前主流的视频网站无一例外地使用了FLV格式。另外由于当前浏览器与Flash Player紧密的结合,使得网页播放FLV视频轻而易举,也是FLV流行的原因之一。
235 0
|
存储
FLV封装格式
FLV封装格式介绍及解释,本文介绍 FLV 里面各种tag的作用。
131 0
|
编解码 Linux vr&ar
如何将mp3文件转pcma格式或PCM格式的wav文件
如何将mp3文件转pcma格式或PCM格式的wav文件
|
Python
RLE格式转换
RLE格式转换
215 0
|
编解码 vr&ar 内存技术
FFmpeg中的音频文件的封装格式和编码格式
FFmpeg对于音频文件的封装和编码是非常简单的,欢迎大家深入使用
|
程序员 Windows
视频格式转换
视频格式转换
359 0
|
存储 编解码 数据安全/隐私保护
FLV 封装格式解析
FLV (Flash Video) 是由 Adobe 公司推出的一种封装格式,主要用于流媒体系统。FLV 封装的媒体文件具有体积轻巧、封装播放简单等特点,很适合网络应用。目前各浏览器普遍使用 Flash Player 作为网页播放器,使得安装有浏览器的计算机终端不需要另外安装播放器,这也是 FLV 格式广为流行的原因之一。
399 0
FLV 封装格式解析