米尔i.MX6UL/i.MX6ULL开发板,该开发板被米尔称之为经典王牌产品。也是是一款嵌入式linux入门级的开发板。本次测试目标是在此开发板上进行视频工具ffmpeg的移植与测试开发,测试ffmpeg在此开发板上进行视频应用测试。
一、FFmpeg简介
FFmpeg是一套开源的音视频代库,具有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等
FFmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP/RTMP 的流媒体服务器,支持直播应用。 采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,具有高可移植性和编解码质量。它几乎实现了所有当下常见的数据封装格式、多媒体传输协议以及音视频编解码器。
很多Linux桌面环境中的开源播放器VLC、MPlayer,Windows下的KMPlayer、暴风影音以及Android下几乎全部第三方播放器都是基于FFMPEG的,可见它的应用非常广泛,也是嵌入式系统中音视频使用最多的代码库。
Ffmpeg工程的几个主要目录:
libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构
和读取音视频帧等功能;
libavcodec:用于各种类型声音/图像编解码;
libavutil:包含一些公共的工具函数;
libswscale:用于视频场景比例缩放、色彩映射转换;
libpostproc:用于后期效果处理;
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
ffsever:一个 HTTP 多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示
通过从这次在MYD-Y6ULL开发板上进行ffmpeg的移植编译与应用开发测试过程看,ffmpeg在该开发板上移植非常容易,而且基本上代码不做任何改动,能够一次编译通过。也说明了该开发板的c/c++的开发工具与库支持比较完善,对这样复杂的工程也有很好的支持。
这也大大方便了试用该方案进行音视频开发的可能性,能够利用开源社区大量的音视频应用资源,开发出多种嵌入式的音视频应用。