FFmpeg是一个开源库,用来记录、转换数字音频、视频,并能将音频、视频转化为流。FFmpeg使用的音/视频编码库libavcodec。
这里介绍一些FFmpeg的简单用法。
一、FFmpeg依赖库
安装FFmpeg依赖 yasm / nasm,选择一个安装即可。这里可以安装yasm。
$ yum install -y yasm
nasm fasm yasm 区别
这三个都是免费开源的汇编编译器,总体上都是采用的Intel的语法。yasm是从nasm的基础上开发出来的,属于同宗,使用了相同的语法,所以nasm的代码可以用yasm编译。
yasm:更新较慢,稳定,对nasm一些不合理的地方进行了改良。
nasm:更新快,能支持更新的指令集,而且还支持Gas语法和AMD64(EM64T)架构,跨平台,支持多种目标文件格式。
fasm:在Windows平台上,fasm是另一个不错的选择,平台支持比较好,可以直接用来开发Windows上的程序,语法也比较独特。在对Windows程序结构的支持上,fasm更好。
yasm的官方地址:http://yasm.tortall.net
nasm的官方地址:http://www.nasm.us
二、编译安装FFmpeg
跟其他linux的开源软件一样,执行configure、make、make install即可。
$ configure --prefix=path && make && make install
github上有一个FFmpeg的java封装:
三、使用FFmpeg
1、
获得视频信息
FFmpeg 提供了一个工具ffprobe,来提取视频的信息。举例如下。
$ ffprobe -i inputFileName -select_streams v:0 -show_entries stream=width,height,duration:stream_tags=rotate -v quiet -of json
-select_streams
v:0 使用第一个流数据(一般都是视频流)
-show_entries stream=width,height,duration:stream_tags=rotate
输出指定的数据对。中间用“:”分割。
输出stream信息里的宽、高、时长;生成stream_tags里的rotate。
-of json 以json格式输出。
2、生成视频缩略图
$ ffmpeg -y -ss 2 -t 5 -i inputFileName -vf "select=eq(pict_type\\,I)" -vframes 1 -f image2 -s 250x140 outuptFileName
-ss 2 从第2秒开始,生成缩略图
-t 5 查找5秒时长内的帧
-vf select=eq(pict_type\\,I) 选择关键帧
-s 250x140 生成缩略图的长宽
3、从一张图片生成指定时长的视频
$ ffmpeg -y -loop 1 -f image2 -i inputFileName -r 10 -s 1024x768 -t 5 -v quiet outputVideoName
-loop 1 循环读取input文件
-r 10 指定帧率为10帧/s
-s 1024x768 视频的长宽(这里即原图片的长宽)
-v quiet 不输出错误信息