ffmpeg是视频开发最常用到的开源软件,ffmpeg功能强大,用途广泛,提供几乎所有你能够想到的与视频开发相关的操作,许多商业软件都以ffmpeg为基础进行开发定制。
FFmpeg: FFmpeg is a free and open-source project consisting of a vast software suite of libraries and programs for handling video, audio, and other multimedia files and streams. At its core is the FFmpeg program itself, designed for command-line-based processing of video and audio files, and widely used for format transcoding, basic editing (trimming and concatenation), video scaling, video post-production effects, and standards compliance (SMPTE, ITU) . 摘自wikipedia
ffmpeg功能庞大,向开发者提供了丰富的函数库调用,常用的函数库包括:
-
libavcodec - 各种格式的音视频编解码
-
libavformat - 各种音视频封装格式的生成和解析,包括获取解码所需信息、读取音视频数据等功能
-
libswscale - 视频图像缩放的库,提供颜色空间转换、图像格式转换的功能
-
libavutil - 工具库,包括算数运算,字符操作等
-
libpostproc - 对视频做预处理的库
-
libpostproc - 滤镜功能库
-
libavdevice - 提供了访问捕获设备和回放设备的接口
此外,ffmpeg还向开发者提供了丰富的命令行工具,对于不熟悉ffmpeg的开发者来说,可以先通过这些命令行工具,对ffmpeg的基本功能有个大致的了解,下面我们就开始正式讨论。
1、ffmpeg安装
这里以Ubuntu 16 LTS版为例介绍FFmpeg的安装。
1.1 添加PPA源
ffmpeg 4是目前最新的发行版本,如果要安装该版本,需要添加PPA源,执行以下命令添加PPA仓库到Ubuntu系统
sudo add-apt-repository ppa:jonathonf/ffmpeg-4
1.2 安装ffmpeg
通过以下命令安装ffmpeg
sudo apt-get update
sudo apt-get install ffmpeg
可以看到x264等相关的动态库文件也会一同安装
sudo apt-get install ffmpeg
[sudo] password for ron:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libaom0 libavcodec58 libavdevice58 libavfilter7 libavformat58 libavresample4 libavutil56 libbs2b0 libchromaprint1 libcodec2-0.4
libflite1 liblilv-0-0 libmysofa1 libnorm1 libopenjp2-7 libopenmpt0 libpgm-5.2-0 libpocketsphinx3 libpostproc55 librabbitmq4
librubberband2v5 libserd-0-0 libsodium18 libsord-0-0 libsphinxbase3 libsratom-0-0 libsrt1-gnutls libswresample3 libswscale5
libvdpau1 libvidstab1.1 libx264-155 libx265-192 libzmq5 mesa-vdpau-drivers vdpau-driver-all
Suggested packages:
ffmpeg-doc serdi sordi libvdpau-va-gl1 nvidia-vdpau-driver nvidia-legacy-340xx-vdpau-driver
Recommended packages:
pocketsphinx-hmm-en-hub4wsj | pocketsphinx-hmm-zh-tdt | pocketsphin