您的位置:首页 > 编程语言 > Java开发

ffmpeg视频Mp4分离语音与图片--Java使用

2015-04-18 13:22 726 查看
ffmpeg视频Mp4分离语音与图片
一、目标

Mp4格式视频中分离语音与图片。

二、ffmpeg介绍

ffmpeg是一款专业视频、音频、图像处理软件。它提供了录制、转换以及流化音视频的完整解决方案。是基于C++实现的,使用时需注意不同的系统环境。

三、ffmpeg下载

官网http://ffmpeg.org/ 请自行下载适合各自环境的执行文件。

下载的文件为ffmpeg-20150415-git-fbdaebb-win32-static.zip

解压目录结构:



Bin目录结构:



上述ffmpeg.exe是个关键文件

四、本机环境介绍

Win7,32位

五、Mp4格式分离图片

直接上代码:

packagenet.sf.ffmpeg_java.example;

importjava.io.InputStream;
importjava.util.List;

publicclass PhotoSeparate {

public static void main(String[] args){
// 视频文件
String videoRealPath ="D:\\mp4\\test.mp4";
// 截图的路径(输出路径)
String imageRealPath ="D:\\ffmpeg\\output\\test.jpg";
List<String> commend =new java.util.ArrayList<String>();
commend.add("D:\\ffmpeg-20150415-git-fbdaebb-win32-static\\bin\\ffmpeg.exe");
commend.add("-i");
commend.add(videoRealPath);
commend.add("-ss");
commend.add("3");
commend.add("-vframes");
commend.add("1");
commend.add("-r");
commend.add("1");
commend.add("-ac");
commend.add("1");
commend.add("-r");
commend.add("1");
commend.add("-ac");
commend.add("1");
commend.add("-ab");
commend.add("2");
commend.add("-s");
commend.add("350*240");
commend.add("-f");
commend.add("image2");
commend.add(imageRealPath);

try {
ProcessBuilderbuilder = new ProcessBuilder();
builder.command(commend);
builder.redirectErrorStream(true);
System.out.println("视频截图开始...");
Process process =builder.start();
System.out.println("视频截图完成...");
} catch (Exception e) {
e.printStackTrace();
System.out.println("视频截图失败!");
}
}
}

六、Mp4格式分离语音

直接上代码:

packagenet.sf.ffmpeg_java.example;

import java.io.InputStream;
import java.util.List;

/**
* 视频语音分离
*/
publicclass VoiceSeparate {

public static void main(String[] args){
// 视频文件
String videoRealPath ="D:\\mp4\\test.mp4";
// 截图的路径(输出路径)
String voiceRealPath ="D:\\ffmpeg\\output\\test.mp3";

List<String> commend =new java.util.ArrayList<String>();
commend.add("D:\\ffmpeg-20150415-git-fbdaebb-win32-static\\bin\\ffmpeg.exe"); commend.add("D:\\ffmpeg-20150415-git-fbdaebb-win32-static\\bin\\ffmpeg.exe");
commend.add("-i");
commend.add(videoRealPath);
commend.add("-vn");
commend.add("-ar");
commend.add("44100");
commend.add("-ac");
commend.add("2");
commend.add("-ab");
commend.add("192");
commend.add("-f");
commend.add("mp3");
commend.add(voiceRealPath);
try {
ProcessBuilderbuilder = new ProcessBuilder();
builder.command(commend);
builder.redirectErrorStream(true);
System.out.println("视频语音分离开始...");
Process process =builder.start();
process.waitFor();//等待进程执行结束
System.out.println("视频语音分离完成...");
} catch (Exception e) {
e.printStackTrace();
System.out.println("视频语音分离失败!");

}
}

}

七、Ffmpe命令摘录

1,获取视频的信息

ffmpeg -i video.avi

2,将图片序列分解合成视频

ffmpeg -i src.mpg image%d.jpg

ffmpeg -f image2 -iimage%d.jpg dst.mpg

合成注意事项:

如果图片序列是3位数,用image%03d

如果jpg文件名字是乱的用,下面命令规整一下

x=1; for i in *jpg; do counter=$(printf %03d $x); mv "$i" image"$counter".jpg; x=$(($x+1)); done

3, 从视频中分离 video, audio 片断

只要音频

ffmpeg -i src.mp4 -ss 00:00:10 -t 00:00:5 -vn -acodec copy dst.mp4 ( -vn 表示 "video no" , -ss00:00:10 -t 00:00:5 表示开始时间为10秒,长度5秒)

只要视频

ffmpeg -i src.mp4 -ss 00:00:10 -t 00:00:5 -an -vcodec copy dst.mp4 ( -an 表示 "audio no" >)

4.从视频抽出声音,并存为Mp3

ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3sound.mp3

( Ubuntu 下可能转化失败,现运行sudo apt-get install ffmpeglibavcodec-extra-53)

5 合成视频和音频

ffmpeg -i son.wav -i video_origine.avi video_finale.mpg (音频也可以是 mp3 , 如果音频比视频长,用KMP播放文件, 视频播完后停最后一画面,音频继续)

其他

为视频重新编码以适合在iPod/iPhone上播放

ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodecmpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180-title X final_video.mp4

为视频重新编码以适合在PSP上播放

ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar24000 -acodec aac final_video.mp4

将.avi转成gif动画(未压缩)

ffmpeg -i video_origine.avi gif_anime.gif

将.avi转成dv

ffmpeg -i video_origine.avi -target pal-dv video_finale.dv

将.avi压缩成divx

ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi

八、总结

ffmpeg是一款强大的视频、音频、图片处理工具。从代码中也可看出,熟悉ffmpeg命令才能更好使用ffmpeg的强大功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: