AviSynth
AviSynth [1]是一个功能强大的视频文件后期处理工具,提供了许多编辑和处理视频文件的方法。
AviSynth是AVISYNTHesizer的缩写,意思就是AVI合成器,是一个Frameserver。(Frameserver就是一个把影像文件从一个程序转换到另外一个程序的过程, 其间没有临时文件或中介文件产生)
这是一个功能强大无比的基于avs脚本文件的视频处理与帧服务软件,建立.avs文件索引输出,还有强大的脚本滤镜功能,很多编辑软件可以支持。
n. [电子] 合成器;合成者
aac
AAC(Advanced Audio Coding),中文称为“高级音频编码”,出现于1997年,基于 MPEG-2的音频编码技术。由诺基亚,苹果等公司共同开发,目的是取代MP3格式。2000年,MPEG-4标准出现后,AAC 重新集成了其特性,加入了SBR技术和PS技术,为了区别于传统的 MPEG-2 AAC 又称为 MPEG-4 AAC。
faac与fdk-aac
dk-aac is an AAC audio encoder.FAAC is an MPEG-4 and MPEG-2 AAC encoder.
cross compiling
什么是交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓
平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结
构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。
嵌入式系统往往资源都是很有限的,如果其资源和我们平常用的桌面计算机(在嵌入式系统开发中我们称之为主机,host machine)一样,那我想可能就不存在交叉编译这么一说了。最为典型的是,嵌入式系统的内存往往是几兆字节,且只有FLASH而没有硬盘这种大容量存储设备。也就是说在这种资源有限的环境中,我们不可能将我们的开发工具安装在嵌入式设备中(在嵌入式系统开发中我们称之为目标机,target machine),然后象我们平时做桌面开发那样,在上面进行编码、调试最后发布软件。
现实情况是,嵌入式系统的开发是在主机上进行的,那就存在一个问题:当我们的目标机处理器与主机的处理器不同时(比如目标机是ARM处理器,而主机是x86处理器),在这种请况下,如何保证在主机上编译的程序能在目标机上运行呢?答案在于编译器上!我们说嵌入式开发用的编译器与我们平时做桌面开发的编译器是不同的,在平时,我们的编译器是运行在什么处理器上,其编译出来的可执行程序也是运行在同样的处理器上的。实际上,我们可以让一个编译器运行在x86主机上,却编译出可以在ARM上运行的可执行程序,这种编译器就是交叉编译器(cross compiler),而采用交叉编译器进行编译就是指交叉编译(cross compiling),而交叉编译器相关的环境就是指交叉编译环境(cross compiling environment)。
举一个例子,这个例子就是VxWorks(一种嵌入式实时操作系统)的Workbench(在早期版本中是Tornado协同仿真环境)。这是一个VxWorks的开发环境,其除了采用Eclipse作为IDE外,后面采用的是GNU的GCC编译器进行程序编译。有人可能要问,GCC能运行在Windows上?其实,GCC不是直接运行在Windows上的,Workbench采用Cygwin(在windows平台上运行的unix模拟环境)作为其编译器的支撑环境,也就是说GCC及其binutils是运行在Cygwin上的。采用Workbench我们可以开发几乎所有主流处理器的嵌入式产品,而所有的工作都在Windows上完成的!
至此,相信你对交叉编译、交叉编译器和交叉编译环境有了很好的了解了。
Libav
libav的前身是 ffmpeg,是一个完整的、跨平台的用于音频和视频录制、转换的解决方案,包含libavcodec编码器。[1]
Libav(旧称:FFmpeg)是一个自由软件,可以执行音讯和视讯多种格式的录影、转档、串流功能,包含了libavcodec ─这是一个用于多个专案中音讯和视讯的解码器函式库,以及libavformat ——一个音讯与视讯格式转换函式库。
pkg-config
pkg-config 是一个提供从源代码中编译软件时查询已安装的库时使用的统一接口的计算机软件。pkg-config原本是设计用于Linux的,但现在在各个版本的BSD、windows、Mac OS X和Solaris上都有着可用的版本。
它输出已安装的库的各个信息,包括:
· 链接器需要的参数
· 已安装软件包的版本信息
工作原理
当安装一个库时(从RPM,deb或其他二进制包管理系统),会包括一个后缀名为pc的文件,它会同其他.pc文件一起放入一个文件夹(依赖与你的系统设置)。
在这个文件里包含有数个条目。这些条目通常包含用于其他使用这个库的程序编译时需要的库设置,以及头文件的位置,版本信息和一个简介。
这是一个用于libpng的.pc文件的样例:
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${exec_prefix}/include
Name: libpng12
Description: Loads and saves PNG files
Version: 1.2.8
Libs: -L${libdir} -lpng12 -lz
Cflags: -I${includedir}/libpng12
这个文件告诉我们这些库可以在/usr/local/lib找到,头文件可以在/usr/local/include里找到,库的名字是libpng12并且版本号是1.2.8。它也提供了用于编译依赖于libpng的源代码时需要的链接器参数。
这儿是一个编译时使用pkg-config的样例:
gcc-otesttest.c $(pkg-config--libs--cflagslibpng)
filters
滤镜
qt-faststart
这是个重要的x264再编码工具, 它的作用是使得视频不必等待下载完成即可开始播放.