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

本文涉及的产品
云解析DNS-重点域名监控,免费拨测 20万次(价值200元)
简介:
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,如需转载请自行联系原作者
相关文章
|
编译器 C++
【C++】几道关于this指针的面试题
【C++】几道关于this指针的面试题
194 0
|
运维 安全 物联网
物联网:NB卡在使用过程中存在的一些限制和需要特别注意的操作事项
物联网NB卡(通常指的是窄带物联网(NarrowBand Internet of Things, NB-IoT)卡)是专为物联网设备设计的无线通信模块,主要用于连接物联网设备与移动网络,实现远程数据交换和控制。然而,在使用物联网NB卡时,确实存在一些限制和操作上的考虑因素。以下是一些主要的限制和操作注意事项:
|
机器学习/深度学习 数据采集 人工智能
一文看尽LLM对齐技术:RLHF、RLAIF、PPO、DPO……
【8月更文挑战第27天】本文全面回顾了近期大型语言模型(LLMs)领域内提升模型与人类价值观一致性的重要进展与挑战。尽管自监督学习及大规模预训练等技术推动了LLMs的快速发展,但如何避免生成不当内容仍是难题。文中系统地将现有研究分为奖励模型、反馈机制、强化学习策略及优化方法四大主题,并深入探讨各技术路径的创新点与局限性,如RLHF、RLAIF等方法。旨在为读者提供清晰的领域概览,促进未来研究发展。[论文链接](https://arxiv.org/pdf/2407.16216)
698 3
|
12月前
|
编解码 网络协议 机器人
顶顶通电话机器人开发接口对接大语言模型之实时流TTS对接介绍
大语言模型通常流式返回文字,若一次性TTS会导致严重延迟。通过标点断句或流TTS可实现低延迟的文本到语音转换。本文介绍了电话机器人接口适配流TTS的原理及技术点,包括FreeSWITCH通过WebSocket流TTS放音,以及推流协议和旁路流对接的详细说明。
878 1
|
存储
可以规避的常见 DVD 刻录错误
选择适合的格式、遵循建议速度、最终化光盘、投资优质介质及保持软件更新,能确保顺利制作出高质量的DVD。避免这些陷阱,提升刻录体验。
326 1
|
数据采集 人工智能 监控
赌你一定想要!OpenDataLab首款大模型多模态标注平台Label-LLM正式开源
Label-LLM 是一款专为大模型训练设计的多模态文本对话标注工具,支持团队协作,让标注工作变得简单高效。它不仅涵盖丰富的任务类型,如回答采集、偏好收集和内容评估等,还支持多模态数据标注,包括图像、视频和音频。Label-LLM具备预标注载入功能,能大幅提升工作效率,并提供全方位的任务管理与可视化分析,确保标注质量。快来体验这款强大的标注平台吧![部署文档](https://github.com/opendatalab/LabelLLM)
2786 0
赌你一定想要!OpenDataLab首款大模型多模态标注平台Label-LLM正式开源
|
开发工具 git
|
人工智能 API 决策智能
【AI Agent系列】【阿里AgentScope框架】实战1:利用AgentScope实现动态创建Agent和自由组织讨论
【AI Agent系列】【阿里AgentScope框架】实战1:利用AgentScope实现动态创建Agent和自由组织讨论
1422 2
|
存储 Ubuntu 网络协议
使用 Docker Compose 安装 Mattermost
本文适合那些正在寻找使用 Docker Compose 安装 Mattermost 的详细且简单的指南的人。
784 1
|
API 数据安全/隐私保护
如何使用Postman 测试Https 网站?
如何使用Postman 测试Https 网站?
981 0