个人觉得很棒的学习资料:
雷霄骅博士csdn链接
当然FFMPEG官网也是,还有其他资料可以自行搜索。
ffmpeg入门
ff是fast forward(快速前进);mpeg是moving picture experts group(动态图像专家组)。
FFmpeg是领先的多媒体框架,能够解码、编码、转码、mux、demux、流、过滤和播放人类和机器创造的几乎所有东西。它支持最模糊的古代格式,直到最先进的。无论它们是由某个标准委员会、社区或公司设计的。它也是高度可移植性的:FFmpeg在各种构建环境、机器架构和配置下编译、运行并通过我们的测试基础架构,这些基础架构跨越Linux、Mac OS X、Microsoft Windows、BSDs、Solaris等。
它包含libavcodec, libavutil, libavformat, libavfilter, libavdevice, libswscale和libswresample,可用于应用程序。以及ffmpeg、ffplay和ffprobe,最终用户可以使用它们进行代码转换和播放。
ffmpeg的7个库:
- libavutil是一个库,其中包含用于简化编程的函数,包括随机数生成器、数据结构、数学例程、核心多媒体实用程序等。
- libavcodec是一个包含音频/视频编解码器的解码器和编码器的库。
- libavformat是一个包含用于多媒体容器格式的demuxer和muxer的库。
- libavdevice是一个包含输入和输出设备的库,用于从许多常见的多媒体输入/输出软件框架抓取和呈现,包括Video4Linux、Video4Linux2、VfW和ALSA。
- libavfilter是一个包含媒体过滤器的库。
- libswscale是一个执行高度优化的图像缩放和颜色空间/像素格式转换操作的库。
- libswresample是一个执行高度优化的音频重采样、重构和样本格式转换操作的库。
libavcodec库
libavcodec库提供了一个通用的编码/解码框架,包含音频、视频和字幕流的多个解码器和编码器,以及几个位流过滤器。
共享架构提供了从位流I/O到DSP优化的各种服务,使其适合于实现健壮和快速的编解码器以及用于实验。
libswscale库
libswscale库执行高度优化的图像缩放、颜色空间和像素格式转换操作。
具体来说,这个库执行以下转换:
重新缩放:是改变视频大小的过程。有几种重新缩放选项和算法。这通常是一个有损过程。
像素格式转换:是将图像的格式和色彩空间进行转换的过程,例如从平面YUV420P到RGB24压缩。它还处理包装转换,即从包装布局(所有像素属于不同的平面交织在同一个缓冲区)转换为平面布局(所有样本属于同一平面存储在一个专用缓冲区或“平面”)。
这通常是一个有损过程,以防源和目标颜色空间不同。