FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了很是先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里不少codec都是从头开发的。html
FFmpeg提供了强大的命令行工具,很是方便用户使用以及二次开发。json
官方网站:http://www.ffmpeg.org/。服务器
FFmpeg项目由如下几部分组成:架构
1.FFmpeg视频文件转换命令行工具,也支持通过实时电视卡抓取和编码成视频文件;async
2.ffserver基于HTTP、RTSP用于实时广播的多媒体服务器.也支持时间平移;ide
3.ffplay用 SDL和FFmpeg库开发的一个简单的媒体播放器;工具
4.libavcodec一个包含了全部FFmpeg音视频编×××的库。为了保证最优性能和高可复用性,大多数编×××从头开发的;性能
5.libavformat一个包含了全部的普通音视格式的解析器和产生器的库。网站
图片来源:http://xcshen.blog.51cto.com/2835389/565929。ui
FFmpeg能够在Windows、Linux、Mac OS等多种操做系统环境中进行安装和使用。
在http://ffmpeg.zeranoe.com/builds/中下载Windows版本的FFmpeg,假以下载的是已经编译好的二进制文件ffmpeg-latest-win32-static.7z,将其解压以后就能够使用了。
打开CMD,cd进入解压以后的bin文件夹,以后就能够在CMD中使用ffmpeg的命令了。
首先须要安装一些×××:lame、libogg、libvorbis、xvid、x264、libdts、a52、faac、amr-nb、amr-wb、lib52等,能够采用源码安装或者rpm、deb等二进制方式安装,安装步骤较简单,跳过。
上面一切安装成功以后,下面就能够安装FFmpeg了,一样能够采用源码安装或者二进制文件安装两种方式。
以源码安装为例,在http://ffmpeg.mplayerhq.hu/download.html下载最新的源码包,例以下载的是ffmpeg-2.0.tar.gz,将其上传到Linux系统的某一个目录,进入该目录而后执行下面的命令进行安装:
tar –xvf ffmpeg-2.0.tar.gz cd ffmpeg-2.0 ./configure --prefix=/usr --enable-gpl --enable-shared --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libamr-nb --enable-libamr-wb --enable-libxvid --enable-libx264 --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-pp --enable-pthreads --disable-ffserver --disable-ffplay make && make install |
ffmpeg相关的命令语法详见附录。
使用ffplay命令就能够播放一个音频文件了,例如执行下面的命令播放一个mp3文件:ffplay.exe D:\Download\4b.mp3,执行以后就会弹出一个窗口进行播放。
跟播放音频文件相似,播放视频文件的时候,将命令后面的文件改成视频文件的路径便可。例如,播放一个mp4文件,执行以下命令:ffplay.exeD:\Download\beijing5-360p.mp4。
将mp4转换为flv格式:ffmpeg -y -iD:\Download\beijing5-360p.mp4 -ab 56k -ar 22050 -b:v 500k -r 29.97 -s 640x358D:\Download\beijing5-360p.flv:
参数说明以下:
1.–y表示覆盖输出文件;
2.–i表示输入文件;
3.–ab表示音频数据流量,通常选择32、64、96、128;
4.–ar表示音频采样率,单位为Hz;
5.–b:v表示视频码率;
6.–r表示帧速率,单位为Hz;
7.–s640x358表示帧尺寸,输出的分辨率为640x358;
8.D:\Download\beijing5-360p.flv表示输出的文件。
执行以下命令进行截图:ffmpeg -y -iD:\Download\beijing5-360p.mp4 -ss 165.000 -frames 1 -f p_w_picpath2D:\Download\p_w_picpaths\cap%3d.jpg
参数说明以下:
1.–y表示覆盖输出文件;
2.–iD:\Download\beijing5-360p.mp4表示输入文件;
3.-ss165.000表示起始时间为165.000秒;
4.-frames1表示只记录一个帧;
5.-fp_w_picpath2表示格式为p_w_picpath2;
6.D:\Download\p_w_picpaths\cap%3d.jpg表示输出文件,%3d相似C语言的数字输出格式,输出为3位数字。
ffmpeg录制视频的方法很简单,执行下面的命令:ffmpeg -f alsa -ac 1-i pulse -acodec aac -f x11grab -s 1024x600 -i :0.0 –sameq a.mp4。
这条命令不但能够录制屏幕,还能够录制声音,其中录制声音的部分是:-f alsa -ac 1 -i pulse-acodec aac。录制视频的是: -f x11grab -s1024x600 -i :0.0 –sameq。
3.1.6 视频切割
剪切的同时,格式不变,音视频参数不变:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -acodec copy -vcodec copy -async 1 bjysxyt1.mp4
剪切的同时,音视频参数不变,只转换格式:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -acodec copy -vcodec copy -async 1 bjysxyt1.flv
剪切的同时,格式不变,只转换音视频参数:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -ab 56k -ar 44100 -b:v 2200k -r 29.97 -s 640x360 bjysxyt1.mp4
剪切的同时,既转换格式又转换音视频参数:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -ab 56k -ar 44100 -b:v 2200k -r 29.97 -s 640x360 bjysxyt1.flv
说明:-i表示输入文件;-acodec copy -vcodec copy 表示音频、视频不进行编解码,直接复制源视频;-ss表示起始时间,-t表示时长,格式均为“小时:分钟:秒”。
3.1.7 获取视频信息ffprobe -v quiet -print_format json -show_format -show_streams VIDEO_FILE