胖蔡说技术
随便扯扯

FFmpeg 的使用

ffmpeg 编译默认会生成4个可执行文件和8个静态库。可执行文件包括用于转码、推流、Dump媒体文件的ffmpeg、用于播放媒体文件的ffplay、用于获取媒体文件信息的ffprobe,以及作为简单流媒体服务器的ffserver。8个静态库其实就是FFmepg的8个模块:

  • AVUtil
    核心工具库,基础模块之一。用于处理一些基础的音视频处理操作
  • AVFormat
    文件格式和协议库,该模块是最重要的模块之一,封装了Protocol层和Demuxer、Muxer层,使得协议和格式对于开发者来说是透明的
  • AVCodec
    编解码库,该模块也是最重要的模块之一,封装了Codec层,单有些Codec具备自己的License,FFmpeg是不会默认添加像x264、fdk-aac、lame等库的,但ffmpeg就像一个平台一样,可以将其他三方的Codec以插件的方式添加进来。然后为开发者提供统一的接口。
  • AVFilter
    音视频滤镜库,该模块提供了音视频特效处理。
  • AVDevice
    输入输出设备库,如ffplay就需要该模块是开启状态的。
  • SwrRessample
    用于音频重采样,可对数字音频进行声道数、数据格式、采样率等多种基本信息的转换。
  • SWScale
    将图像进行格式化转换的模块,如YUV和RGB的转换
  • PostProc
    该模块可用于进行后期处理,当使用AVFilter时候需要将该模块的开关打开。

配置异常

  • ffprobe: error while loading shared libraries: libfdk-aac.so.2: cannot open shared object file: No such file or directory
  1. 安装完成后显示加载so库失败,首先找到库的位置:
find / -name "libfdk-aac.so.2"

  1. 添加库加载路径
hfcai@hfcai:~$ cd /etc/ld
ldap/         ld.so.conf.d/
hfcai@hfcai:~$ cd /etc/ld.so.conf.d/
hfcai@hfcai:/etc/ld.so.conf.d$ touch ffmpeg.conf
hfcai@hfcai:/etc/ld.so.conf.d$ vim ffmpeg.conf

文件中添加路径:/home/hfcai/local/lib

  1. 更新加载路径
hfcai@hfcai:~$sudo ldconfig
hfcai@hfcai:~$ffmpeg --help

FFmpeg API使用

术语

  • 容器、文件:特定格式的多媒体文件,如MP4、flv、mov等.
  • 媒体流:表示时间轴上的一段连续数据,如一段声音数据、一段视频数据或一段字幕数据,可以是压缩的,也可以是飞压缩的,压缩的数据需要关联特定的编解码器。
  • 数据帧/数据包:通常一个媒体流由大量的数据帧组成的,对于压缩数据,帧对应着编解码器的最小处理单元,分属不同媒体流的数据帧交错存储于容器中。
  • 编解码器: 编解码器是以帧为单位实现压缩数据和原始数据之间的相互转换的。
赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » FFmpeg 的使用
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏