视频采集、截图多媒体处理工具FFmpeg
2012年01月13日 点击数: 21633 字体: 大 中 小
多媒体处理工具
FFmpeg
多媒体视频处理工具fmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水引等FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec。
视频采集功能:
FFmpeg是在Linux下开发出来的,但它可以在包括Windows在内的大多数操作系统中编译。这个项目是由Fabrice Bellard发起的,现在由Michael Niedermayer主持。
ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。
ffmpeg在Linux下的视频采集
在Linux平台上,ffmpeg对V4L2的视频设备提高了很好的支持,如:
./ffmpeg -t 10 -f video4linux2 -s 176*144 -r 8 -i /dev/video0 -vcodec h263 -f rtp rtp://192.168.1.105:5060 > /tmp/ffmpeg.sdp
以上命令表示:采集10秒钟视频,对video4linux2视频设备进行采集,采集QCIF(176*144)的视频,每秒8帧,视频设备为/dev/video0,视频编码为h263,输出格式为RTP,后面定义了IP地址及端口,将该码流所对应的SDP文件重定向到/tmp/ffmpeg.sdp中,将此SDP文件上传到流媒体服务器就可以实现直播了。
ffmpeg在windows下的视频采集
在windows下关于ffmpeg视频采集的资料非常少,但是ffmpeg还是支持windows下视频采集的。ffmpeg支持windows下video for windows(VFW)设备的视频采集,不过VFW设备已经过时,正在被WDM的视频设备所取代,但是ffmpeg还没有支持WDM的计划,不过好像有将WDM转为VFW的工具,因此ffmpeg还是可以在windows下进行视频采集的。
视频格式转换功能:
ffmpeg视频转换功能。视频格式转换,比如可以将多种视频格式转换为flv格式,可不是视频信号转换 ,,
ffmpeg可以轻易地实现多种视频格式之间的相互转换(wma,rm,avi,mod等),例如可以将摄录下的视频avi等转成现在视频网站所采用的flv格式。
视频截图功能:
对于选定的视频,截取指定时间的缩略图。视频抓图,获取静态图和动态图,不提倡抓gif文件;因为抓出的gif文件大而播放不流畅
给视频加水引功能:使用ffmpeg 视频添加水印(logo)。
-----------------------------------------------------------------------------------------------------------------------
视频转码:
List
commend.add(ffmpeg硬盘路径);
commend.add("-i");
commend.add(转码文件硬盘路径);
commend.add("-y");
commend.add("-ar");
commend.add("22050");
commend.add("-s");
commend.add("480*360");
commend.add("-b");
commend.add("1000");
commend.add("-qscale");
commend.add("4");
commend.add(输入文件路径);
try{
ProcessBuilder builder = newProcessBuilder();
builder.command(commend);
builder.redirectErrorStream(true);
System.out.println("视频转码开始...");
// builder.start();
Process process = builder.start();
InputStream in = process.getInputStream();
byte[] re = newbyte[1024];
System.out.print("正在进行转码,请稍候");
while(in.read(re) != -1) {
System.out.print(".");
}
System.out.println("");
in.close();
System.out.println("视频转码完成...");
} catch(Exception e) {
e.printStackTrace();
System.out.println("视频转码失败!");
}
-----------------------------------------------------------------------------------------------------------------------
视频截图:
List
commend.add(ffmpeg文件硬盘路径);
commend.add("-i");
commend.add(待截图文件硬盘路径);
commend.add("-y");
commend.add("-f");
commend.add("image2");
commend.add("-ss");
commend.add("8");
commend.add("-t");
commend.add("0.001");
commend.add("-s");
commend.add("350*240");
commend.add(截图的图片保存路径);
try{
ProcessBuilder builder = newProcessBuilder();
builder.command(commend);
builder.redirectErrorStream(true);
System.out.println("视频截图开始...");
// builder.start();
Process process = builder.start();
InputStream in = process.getInputStream();
byte[] re = newbyte[1024];
System.out.print("正在进行截图,请稍候");
while(in.read(re) != -1) {
System.out.print(".");
}
System.out.println("");
in.close();
System.out.println("视频截图完成...");
} catch(Exception e) {
e.printStackTrace();
System.out.println("视频截图失败!");
}
FFMpeg参数说明:
1. 常用通用选项
-i fileName : 输入文件-y : 覆盖输出文件-t 持续时间(秒) : 录制多久-ss 指定时间(秒) : 开始录制点-f 格式: 强迫采用格式(iamge2:jpg;gif:gif)
2. 常用视频选项
-b 比特率: 默认为200(kb/s)-r 帧频: 默认为25-s 帧大小: 宽x高(默认160x128)-aspect 设置横纵比: 4:3-vn : 不做视频记录
3. 常用音频选项
-ab 音频码率-ar 音频采样率-an 不使用音频记录
windows下用ffmpeg.exe下载路径http://ffmpeg.zeranoe.com/builds/ 自己选择32位或64位