用java小例题说明更直观:(可以直接编译运行)

环境我在windows平台下测试的。。。

需要在e:/下有ffmpeg.exe;mencoder.exe;drv43260.dll;pncrt.dll共4个文件。

如何得到这4个文件参考文章http://blog.sina.com.cn/u/4a424eca010005kb

还要在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格式的视频文件。。。

package com.jh.test;

import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

public class ConvertVideo {

private static String inputPath = "";

private static String outputPath = "";

private static String ffmpegPath = "";

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

getPath();

if (!checkfile(inputPath)) {

System.out.println(inputPath + " is not file");

return;

}

if (process()) {

System.out.println("ok");

}

}

public static void getPath(){

// 先获取当前项目路径,在获得源文件、目标文件、转换器的路径

File diretory = new File("");

try {

String currPath = diretory.getAbsolutePath();

//视频的地址

inputPath = "C:\\平行四边形面积.flv";

//视频转完格式存放地址

outputPath = "E:\\mp4\\";

//转换视频的插件位置

ffmpegPath = "G:\\工具类\\ffmpeg-20171225-be2da4c-win64-static\\ffmpeg-20171225-be2da4c-win64-static\\bin\\";

System.out.println(currPath);

}

catch (Exception e) {

System.out.println("getPath出错");

}

}

public static boolean process() {

int type = checkContentType();

boolean status = false;

System.out.println("直接转成mp4格式");

status = processMp4(inputPath);// 直接转成mp4格式

return status;

}

private static int checkContentType() {

String type = inputPath.substring(inputPath.lastIndexOf(".") + 1, inputPath.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) {

Listcommend = new ArrayList();

commend.add(ffmpegPath + "mencoder");

commend.add(inputPath);

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("mp4");

commend.add("-o");

commend.add(outputPath + "a.AVI");

try {

ProcessBuilder builder = new ProcessBuilder();

Process process = builder.command(commend).redirectErrorStream(true).start();

new PrintStream(process.getInputStream());

new PrintStream(process.getErrorStream());

process.waitFor();

return outputPath + "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(inputPath)) {

System.out.println(oldfilepath + " is not file");

return false;

}

Listcommand = new ArrayList();

command.add(ffmpegPath + "ffmpeg");

command.add("-i");

command.add(oldfilepath);

command.add("-ab");

command.add("56");

command.add("-ar");

command.add("22050");

command.add("-qscale");

command.add("8");

command.add("-r");

command.add("15");

command.add("-s");

command.add("600x500");

command.add(outputPath + "a.flv");

try {

// 方案1

// Process videoProcess = Runtime.getRuntime().exec(ffmpegPath + "ffmpeg -i " + oldfilepath

// + " -ab 56 -ar 22050 -qscale 8 -r 15 -s 600x500 "

// + outputPath + "a.flv");

// 方案2

Process videoProcess = new ProcessBuilder(command).redirectErrorStream(true).start();

new PrintStream(videoProcess.getErrorStream()).start();

new PrintStream(videoProcess.getInputStream()).start();

videoProcess.waitFor();

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

private static boolean processMp4(String oldfilepath) {

if (!checkfile(inputPath)) {

System.out.println(oldfilepath + " is not file");

return false;

}

Listcommand = new ArrayList();

command.add(ffmpegPath + "ffmpeg");

command.add("-i");

command.add(oldfilepath);

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

command.add("libx264");

command.add("-mbd");

command.add("0");

command.add("-c:a");

command.add("aac");

command.add("-strict");

command.add("-2");

command.add("-pix_fmt");

command.add("yuv420p");

command.add("-movflags");

command.add("faststart");

command.add(outputPath + "a.mp4");

try {

// 方案1

// Process videoProcess = Runtime.getRuntime().exec(ffmpegPath + "ffmpeg -i " + oldfilepath

// + " -ab 56 -ar 22050 -qscale 8 -r 15 -s 600x500 "

// + outputPath + "a.flv");

// 方案2

Process videoProcess = new ProcessBuilder(command).redirectErrorStream(true).start();

new PrintStream(videoProcess.getErrorStream()).start();

new PrintStream(videoProcess.getInputStream()).start();

videoProcess.waitFor();

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

}

class PrintStream extends Thread

{

java.io.InputStream is = null;

public PrintStream(java.io.InputStream is)

{is = is;

}

public void run()

{

try

{

while(this != null)

{

int _ch = __is.read();

if(_ch != -1)

System.out.print((char)_ch);

else break;

}

}

catch (Exception e)

{

e.printStackTrace();

}

}

}

java flv转mp3_用java程序调用ffmpeg执行视频文件格式转换flv相关推荐

  1. java调用ffmepg_java调用ffmpeg施行视频转换

    java调用ffmpeg执行视频转换 用java小例题说明更直观:(可以直接编译运行) 环境我在windows平台下测试的... 需要在e:\下有ffmpeg.exe;mencoder.exe;drv ...

  2. Java调用ffmpeg进行视频.H264抽帧,并保存为图片

    Java调用ffmpeg进行视频.H264抽帧,并保存为图片 1. 需求 2. 解决 3. 源码 参考 1. 需求 对视频 D:\data\01-test.H264进行抽帧并保存为图片,图片命名为1. ...

  3. Java调用FFmpeg实现视频录制

    FFmpeg是一个很好用的开源的视频处理工具,网上也有一些java调用FFmpeg的方法,然而这些文章大部分都有一个共同的特点,就是用java去调用FFmpeg去做视频处理,几乎没有去做录制视频和音频 ...

  4. C#程序调用cmd执行命令

    酷小孩 原文 C#程序调用cmd执行命令 对于C#通过程序来调用cmd命令的操作,网上有很多类似的文章,但很多都不行,竟是漫天的拷贝.我自己测试整理了一下. 代码: string str = Cons ...

  5. 使用ffmpeg进行视频文件转换成FLV整理

    本系列文章导航 Windows下FFmpeg快速入门 ffmpeg参数解释 mencoder和ffmpeg参数详解(Java处理视频) Java 生成视频缩略图(ffmpeg) 使用ffmpeg进行视 ...

  6. unity PC端 调用FFmpeg生成视频 unity序列帧合成视频

    两个脚本  一个需要挂载 FFmpeg软件在下面链接下载   需要放到streamingAsset\ffmpeg文件夹下 下面再出一个安卓调用FFmpeg生成视频的博客 using System.Co ...

  7. 爱奇艺视频qsv转换flv格式方法教程

    爱奇艺视频qsv转换flv格式怎么转换呢?众所周知,下载的爱奇艺视频是qsv格式,qsv是一种加密格式,只能在爱奇艺播放器播放,因为这一点,让很多人为之头疼,因为一般的视频转换器拿它也好无办法,难道就 ...

  8. python视频处理加速的库_Python调用ffmpeg开源视频处理库,批量处理视频

    代码示例 # coding=utf-8 import os import subprocess import datetime import json, pprint import re, time ...

  9. php ffmpeg截图,PHP调用ffmpeg对视频截图并拼接脚本

    这篇文章主要介绍了PHP调用ffmpeg对视频截图并拼接脚本 PHP脚本调用ffmpeg对视频截图并拼接,供大家参考,具体内容如下 目前支持MKV,MPG,MP4等常见格式的视频,其他格式有待测试 1 ...

最新文章

  1. 还在为论文发愁?ACL组委会手把手教你论文投稿小技巧 | ACL 2017
  2. 编写TreeSet类的实现程序,其中相关的迭代器使用二叉查找树
  3. php 递归分销角色,PHP递归无限分类
  4. 团队项目计划BACKLOG
  5. 修改数据包欺骗服务器,Fiddler协议捕获编辑工具与Session欺骗原理详解
  6. linux下搭建属于自己的博客(WordPress安装)
  7. Tree树 递归查询,显示成JSON格式
  8. keras编写自定义的层
  9. STL:STL各种容器的使用时机详解
  10. 区块链应用 项目开发步骤
  11. 『提醒自己』-自身遗忘掉的知识1
  12. 基于DFSMN-CTC及CTC-CE联合训练的声学模型
  13. Windows Print Spooler远程代码执行漏洞复现(CVE-2021-1675)
  14. ESP32_学习笔记(一)NVS的操作(存储和读取大数组)(为什么存入数据成功,读取却为零的原因)
  15. CloudBees程序员就如何开发可大规模扩展的HTTP服务器进行演讲
  16. 前端学习路线之基础篇-李南江
  17. 雷人的请假对白--员工向领导到请假
  18. docker学习——杂记
  19. KDD CUP 1999数据集
  20. Chrome 用户数据配置文件夹保存路径在哪?(Mac OS X/Windows/Linux)

热门文章

  1. 产品方法论总结(1)——产品思维产品设计的5个层次
  2. Notepad++输入模式之修改模和插入模式的切换
  3. mac电脑磁盘硬盘爆满了怎么办?
  4. 自制小爱音箱控制氛围灯(小爱音箱+Arduino+RGB灯条+点灯科技)
  5. 如何解决el-input中文逗号自动转化英文逗号失效问题?
  6. 远程桌面监控系统java_基于Java的远程桌面监控源代码
  7. 小波变换(wavelet transform)
  8. Coretz可爱手写趣味俏皮字体 for mac
  9. 在线查询解析邮件接收的邮件
  10. Transcad——邻接矩阵