1. 初识FFmpeg
来源:互联网 发布:农村淘宝发展现状分析 编辑:程序博客网 时间:2024/03/29 20:15
白话:
工作以来,从事的是Android方面的上层应用开发,主要关于智能电视中媒体播放上层应用的开发。随着工作的深入,慢慢认识到上层应用开发只是媒体播放中很表层的部分。在工作期间也听说过底层的媒体播放相关的对接有用GStreamer实现的,或者FFmpeg实现。最近空余时间较多,因此想潜心探索一下媒体播放底层的实现方式和原理。看到网上很多开源项目使用的是FFmpeg,并且现在网络直播比较热门且使用FFmpeg作为媒体处理的核心单元,因此将FFmpeg作为探索的对象。
1.1 开源的FFmpeg
1.1.1 FFMPEG作为开源项目:
- 官网地址:http://ffmpeg.org/
- github地址:https://github.com/FFmpeg/FFmpeg
- 采用LGPL(GNU Lesser General Public License 2.1+)或GPL(GNU General Public License 2+)许可证。
1.1.2 FFmpeg历史
FFmpeg的名字源于mpeg视频标准组织,而"FF"表示"fast forward",我自己猜想,可能是FFmpeg的创始人希望此项目快速发展和迭代吧。此项目的创始人是Fabrice Bella (法布里斯·贝拉)。他可是计算机大牛,不仅仅是FFmpeg的项目的创始人,而且是QEMU、Tiny C Compiler等项目的创始人。2000年,FFmpeg创建。
1.1.3 FFmpeg能干什么
- 跨平台(Linux、Windows、MacOS)
- decode, encode, transcode, mux, demux, stream, filter and play pretty much anything
- 为开发人员应用开发提供以下库:
- libavcodec:通用音频、视频、字幕编解码框架,包括许多编码器和解码器和比特流过滤器。
- libavutil:工具库,帮助开发可移植的多媒体程序,包含可移植的字符串处理函数、随机数生成器、数据结构、数学运算函数、密码学和多媒体相关的函数。
- libswscale:提供高度优化的图片比例缩放和颜色空间、像素格式转换功能。
- libswresample:提供高度优化的音频重采样、重新矩阵运算和采样格式转换功能。
- libavformat:一个对音频流、视频流、字幕流复用和解复用(muxing and demuxing)的通用框架,其包含许多媒体封装格式的复用器和解复用器。
- libavdevice:从一些通用的多媒体输入输出设备中获取媒体流或者将媒体流渲染到这些设备上,其支持许多通用的多媒体输入输出设备,包括:Video4Linux2、VfW、DShow、ALSA。
- libavfilter:通用音视频过滤框架,包含许多filters、sources、sinks。
- 提供的主要工具:
- ffmpeg:用于操作、转换、播放多媒体内容的命令行工具库。
- ffplay:简约的多媒体播放器。
- ffprobe:分析工具,用于检测多媒体内容。
- ffserver:用于直播的多媒体播放服务器。
1.1.4 怎么获取FFmpeg源码
- 官网直接下载:http://ffmpeg.org/download.html
- 通过git工具下载:
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
- 目录:
1 0
- 1. 初识FFmpeg
- 初识FFmpeg
- FFmpeg的初识
- FFmpeg Understanding(1. What’s the FFMPEG?)
- 【1.启航ffmpeg】ffmpeg on Android
- 1.初识UML
- 1.初识溢出
- 1.HTML5初识
- 1.初识MongoDB
- 1.初识backbone.js
- 1. spring mvc 初识
- 1. 初识Deep Learning
- 1.初识backbone.js
- 1.初识c语言
- Redis初识:1.安装
- 1.Hibernate初识
- 1.重新初识java
- 1.初识Linux
- 【算法】程序猿不写代码是不对的49
- 让eclipse-CDT识别c++11 新容器
- 485. Max Consecutive Ones
- CSS边框长度控制
- tcpdump抓包
- 1. 初识FFmpeg
- Android TabLayout的使用(ViewPager添加标题)
- 使用jxls2.X导出excel文件
- 线上和线下营销有“隔阂”?三大交融妙招助力效益最大化!
- 如何在Windows下开发Python
- Java学习之使用集合实现对字符串中元素指定格式输出
- 单元测试方法探索
- jsp和severlet的区别
- 项目之TabLayout + AppBarLayout + CoordinatorLayout