- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
ffmpeg的快速音视频开发方法
在DSP平台上移植音视频编解码算法通常分为3个阶段: 第1个阶段产生并评估C代码;第2个阶段优化C代码;第3个阶段进行汇编优化[1]。整个过程比较耗时,工作量巨大。为减小移植工作量,可引入ffmpeg音视频开发包,在开发包基础上进行开发可以免去第一阶段工作,并减少部分第二阶段的工作。ffmpeg是一个优秀的音视频解决方案,在此框架下可以方便、快速地进行进一步的开发。在嵌入式硬件平台和嵌入Linux环境下,本文搭建了一种基于ffmpeg框架的音视频编解码软件开发平台,可供算法改进、性能测试,使得视频编解码算法的优化改进得以在一个高起点上快速进行。本文分别介绍了平台搭建步骤(包括UBoot、Linux、ffmpeg的移植)和基于ffmpeg开发的要点。
1 ffmpeg简介
ffmpeg是一个集录制、转换、音/视频编解码功能为一体的、完整的开源解决方案。ffmpeg的开发基于Linux操作系统,也可在大多数操作系统中编译和使用。ffmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码;TCPMP、VLC、MPlayer等开源播放器都用到了ffmpeg。它能够快速实现音视频格式转换,也能从音视频源获取数据并将其保存。在捕获视频数据时可以设置捕获设备和视频输入标准(包括NTSC、PAL 及SECAM),对于DV1394还可设置视频捕获通道。ffmpeg 使用video4linux 架构的视频源,以及其他任何开源系统的音频源。
2 建立嵌入式Linux开发平台
2.1 bootloader移植
UBoot是一个著名的开放源码项目,支持ARM、PowerPC等多种架构的处理器,也支持Linux、NetBSD 和VxWorks 等多种操作系统。UBoot是用于初始化目标板硬件,为嵌入式操作系统提供目标板硬件配置信息,完成嵌入式操作系统装载、引导和运行的固件程序。
本嵌入式平台硬件环境的CPU为S3C2410,板上用来启动的NOR Flash为Intel公司的E28F320J3。移植工作的板极配置主要是配置好NOR Flash的驱动,用于存放UBoot镜像文件,配置网卡芯片是为了可以使用网络加载Linux内核镜像文件。
本平台使用u