FFMPEG是一个跨平台的音视频音视频处理的开源套件,我们的学习实践路线如下:
首先使用PC上使用熟悉基本的常用命令;
再交叉编译android平台上使用的ffmpeg;
最后在代码层面学习ffmpeg的代码结构以及具体实现。
本篇,我们先来熟悉ffmpeg的常用命令,先从直观上了解ffmpeg能做什么。
使用FFMPEG之前,我们要先安装对应的应用程序,可以采用从ffmpeg官网上下载源码进行配置编译使用,也可以采用直接安装对应的应用程序,
Mac/Linux平台可以通过如下方式安装编译
1. 在yasm官网http://yasm.tortall.net/Download.html 下载yasm
2. 配置yasm
3. make 编译yasm
4. make install 安装yasm
5. 在官网http://ffmpeg.org/ 下载ffmpeg
6. 配置ffmpeg
7. make编译
8. make install 安装ffmpeg
Mac下也可以通过brew安装ffmpeg
brew iinstall ffmpeg --with-ffplay
我们可以通过后者快速安装ffmpeg,先了解ffmpeg能做什么,再来编译或者交叉编译生成对应的ffmpeg命令。
一、播放器ffplay常用命令
ffplay是以FFMPEG框架为基础,外加SDL构建的多媒体播放器。支持各种格式的音视频的播放,包括各种封装格式的音视频、以及裸音频pcm或者裸yuv数据,也可以设置音视频同步的方式(以音频为基准、以视频为基准、外部时钟)、播放时可以设置循环模式
下面我们来具体实践
1.1 播放音频数据
ffplay music.mp3
播放音频可以通过快捷键w切换显示模式
通过快捷键q退出播放
1.2 播放视频数据
ffplay video.mp4
如果想循环播放可以通过loop来指定循环次数
ffplay video.mp4 -loop 3
1.3 播放yuv数据
使用ffplay播放yuv原始数据表示的视频图片,要告诉ffplay视频的格式、大小、类型,如下所示:
ffplay -f rawvideo -s 640x480 -pix_fmt yuv420p yuv.yuv
从mp4中提取出对应的yuv数据,可以通过
ffmpeg -i video.mp4 -s 640x480 -pix_fmt yuv420p yuv.yuv
1.4 设置音视频同步方式
音视频常用的方案有三种 以音频为基准(默认)、以视频为基准、以外部时钟为基准。
ffplay video.mp4 -sync audio
ffplay video.mp4 -sync video
f