FFmpeg使用小记

什么是FFmpeg

1.1 简介

FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPLGPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了很是先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里不少codec都是从头开发的。html

FFmpeg提供了强大的命令行工具,很是方便用户使用以及二次开发。json

官方网站:http://www.ffmpeg.org/服务器

1.2 组件

FFmpeg项目由如下几部分组成:架构

1.FFmpeg视频文件转换命令行工具,也支持通过实时电视卡抓取和编码成视频文件;async

2.ffserver基于HTTPRTSP用于实时广播的多媒体服务器.也支持时间平移;ide

3.ffplay SDLFFmpeg库开发的一个简单的媒体播放器;工具

4.libavcodec一个包含了全部FFmpeg音视频编×××的库。为了保证最优性能和高可复用性,大多数编×××从头开发的;性能

5.libavformat一个包含了全部的普通音视格式的解析器和产生器的库。网站

1.3 FFmpeg架构流程图

图片来源:http://xcshen.blog.51cto.com/2835389/565929ui

怎么安装FFmpeg

FFmpeg能够在WindowsLinuxMac OS等多种操做系统环境中进行安装和使用。

2.1 Windows系统下安装

http://ffmpeg.zeranoe.com/builds/中下载Windows版本的FFmpeg,假以下载的是已经编译好的二进制文件ffmpeg-latest-win32-static.7z,将其解压以后就能够使用了。

打开CMDcd进入解压以后的bin文件夹,以后就能够在CMD中使用ffmpeg的命令了。

2.2 Linux系统下安装

首先须要安装一些×××:lamelibogglibvorbisxvidx264libdtsa52faacamr-nbamr-wblib52等,能够采用源码安装或者rpmdeb等二进制方式安装,安装步骤较简单,跳过。

上面一切安装成功以后,下面就能够安装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

ffmpeg相关的命令语法详见附录。

3.1 命令行工具的用法

 

3.1.1 播放音频

使用ffplay命令就能够播放一个音频文件了,例如执行下面的命令播放一个mp3文件:ffplay.exe D:\Download\4b.mp3,执行以后就会弹出一个窗口进行播放。

3.1.2 播放视频

跟播放音频文件相似,播放视频文件的时候,将命令后面的文件改成视频文件的路径便可。例如,播放一个mp4文件,执行以下命令:ffplay.exeD:\Download\beijing5-360p.mp4

3.1.3 视频格式转换

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表示音频数据流量,通常选择326496128

4.–ar表示音频采样率,单位为Hz

5.–b:v表示视频码率;

6.–r表示帧速率,单位为Hz

7.–s640x358表示帧尺寸,输出的分辨率为640x358

8.D:\Download\beijing5-360p.flv表示输出的文件。

3.1.4 截图

执行以下命令进行截图: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位数字。

3.1.5 录制屏幕

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

相关文章
相关标签/搜索