文档库 最新最全的文档下载
当前位置:文档库 › windows下编译ffmpeg

windows下编译ffmpeg

windows下编译ffmpeg
windows下编译ffmpeg

FFmpeg在Windows系统下的编译过程

.

由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio 提供的C/C++编译器不兼容,

因此它不能使用MSVC++编译。要想使用FFMpeg,最先要解决的问题就是在Windows下配置一个类似Linux的编译环境,

将FFMpeg编译为二进制库以后,再利用其进行进一步开发。

MSVC++并不严格的遵循C标准,所以整个编译过程必须使用MSys+MinGW系统来完成。

如果选择编译动态链接库(dll),这些库将和其他的动态链接库一样在使用上没什么差别,

可以使用MSVC++来链接这些库到自己的程序,只有这种情况下MSVC++是被支持的。

FFmpeg在Windows系统下的编译过程如下:

准备MSys+MinGW系统

1)安装MSys

到https://www.wendangku.net/doc/ca4167591.html,/project/showfiles.php?group_id=2435下载文件:

bash-3.1-MSYS-1.0.11-snapshot.tar.bz2

msysCORE-1.0.11-2007.01.19-1.tar.bz2

(可能会有版本变化,以下同)

解压msysCORE-1.0.11-2007.01.19-1.tar.bz2,比如解压到D:/msys(以下内容都使用该路径描述)。

解压bash-3.1-MSYS-1.0.11-snapshot.tar.bz2,产生一个名为bash-3.1的目录,在该目录下有一个子目录名为bin,

其他的目录不需要关心。复制bin目录中的所有文件到D:/msys/bin,提示是否要覆盖sh.exe 的时候,选择是。

到“D:/msys/postinstall”目录下执行pi.bat,在出现的提示中输入n回车后,按任意键退出即可。

2)安装MinGW

同样是到https://www.wendangku.net/doc/ca4167591.html,/project/showfiles.php?group_id=2435下载文件:

binutils-2.17.50-20060824-1.tar.gz

gcc-core-3.4.5-20060117-1.tar.gz

gcc-g++-3.4.5-20060117-1.tar.gz

w32api-3.9.tar.gz

mingw-runtime-3.12.tar.gz

把它们全部解压到D:/msys/mingw。

3)修改“msys.bat”

用文本编辑器打开D:/msys/msys.bat,由于打算用MSVC++编译程序,所以需要有.lib 文件才能链接到FFmpeg的库,这些.lib文件可以使用微软的工具链中lib命令产生。为此,机器上必须已经安装了微软的Visual Studio或是Visual C++。把下面一行加到msys.bat的最前面,把路径替换成机器上vcvars32.bat实际存在的路径,比如我的在“D:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin”,于是就添加:

call "D:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin/vcvars32.bat"

4)系统整合

复制D:/msys/etc/fstab.sample为D:/msys/etc/fstab,用文本编辑器打开D:/msys/etc/fstab 编辑。

(需要使用一个支持Unix换行风格的编辑器,比如Notepad++),把下面这行:d:/mingw /mingw

改为:

d:/msys/mingw /mingw

完成以上步骤,MSys+MinGW系统就配置完成了。

用SVN方式获取FFmpeg

由于FFmpeg的源代码存放在SVN仓库里,所以必须使用命令行程序或是图形界面程序来访问。为了方便,我使用TortoiseSVN这个图形界面程序,因为它和Windows资源管理器结合的非常好。

首先到https://www.wendangku.net/doc/ca4167591.html,/project/showfiles.php?group_id=138498下载TortoiseSVN并安装,

安装结束后需要重新启动才可以使用。

如果希望使用中文版本,可以下载LanguagePack-version-win32-zh_CN.exe,这样软件就变成熟悉的中文界面了。

由于TortoiseSVN完全整合到了Windows资源管理器中,所以我们只要开启资源管理器,

在希望存放代码的目录上右击选择“SVN检出...”就可以启动TortoiseSVN。

我把FFmpeg源代码存储在“D:/ffmpeg”目录下,所以右击该目录,选择“SVN检出...”,然后在出现的对话框中填写如下内容:

图1

点击确定就会开始下载过程,TortoiseSVN会把最新版本的FFmpeg源代码下载到本地目录中,等待下载结束,

就可以开始编译过程。

由于FFmpeg的维护人员较多,下载的版本难免会有错误,甚至于当前下载的版本根本就无法编译,所以要经常更新。

更新的方法很简单,右击FFmpeg所在的目录,选择“SVN更新”即可。

编译

首先通过MSys安装目录下的msys.bat启动MSys,这时会出现一个命令行窗口,它是一个运行着bash的rxvt程序,如下图:

图2

这是一个类似Linux的shell并且在Windows上运行,就像是在使用一个真正的Linux shell。不过使用这个shell时需要注意:

→目录名使用正斜杠来分割,而不是Windows所使用的反斜杠(比如说要写成

"D:/ffmpeg"而不是"D:/ffmpeg")。

→盘符(例如"C:/")可以从根目录处访问(像这样"/C/")。

→文件名或目录名中如果带有空格,必须用双引号括起(例如这样"/C/Program Files",带有双引号)。

下面切换到存放FFmpeg源代码的目录,方法是输入:"cd /D/ffmpeg"。

接下来要配置FFmpeg,选择编译时包含的库,对于如何加入对第三方库的支持,请看后续描述,这里先输入:

./configure --enable-memalign-hack

--enable-memalign-hack选项是FFmpeg在Windows上编译成功所必须指定的,待配置完成后,将回到命令提示符,看到下图所示的画面:

图3

如果没有错误的话,就可以"make"具有基本功能的FFmpeg了,在提示符后输入:"make"。

编译的过程将持续很长时间。如果一切正常,结束后将返回提示符,并有如下的输出画面:

图4

这时程序已经编译好了,在存放FFmpeg源代码的目录下可以找到ffmpeg.exe这个文件。

之后,如果希望把FFmpeg安装到系统中,可以执行安装步骤:"make install",

这将会复制所有生成的重要文件到MSys的local文件夹下。

由于我只是调用FFmpeg,所以没有安装,而是把ffmpeg.exe复制到需要的目录下,作为一个模块使用。

如果希望使用FFmpeg包含的libavcodec库开发多媒体文件处理程序,

还需要编译libavcodec的dll动态链接库,编译过程和上述过程稍有差别,如下所述:首先切换到FFmpeg的源代码目录,在开始编译前先使用"make distclean"清理上一次留下的中间文件,然后向configure脚本多传递两个参数:

./configure --enable-shared --disable-static --enable-memalign-hack

最后执行"make"命令就可以了。

这种编译方式能够得到供MSVC++使用的文件,从而使用MSVC++进行进一步开发。

链接

在FFmpeg目录下有三个子目录名字分别为:libavutil、libavcodec和libavformat,

如果在前述步骤中成功生成了动态链接库,那么在这三个目录下都有一个SLIBNAME_WITH_MAJOR.lib这样的文件,

例如我生成的是avcodec-51.lib、avformat-51.lib 和avutil-49.lib,MSVC++可以从这些文件中知道dll的导出函数。

现在通过包含FFmpeg的头文件,和使用上述三个lib文件进行链接,就能够编写具备FFmpeg功能的应用程序了。

加入对第三方库的支持

我以加入对mp3lame的支持为例,说明加入第三方库的方法。

首先需要下载mp3lame,这里有两个方案可以选择:

→到https://www.wendangku.net/doc/ca4167591.html,/project/showfiles.php?group_id=290下载lame-3.97.tar.gz,使用以下命令编译并安装到MinGW的库中:

./configure --prefix=/static --disable-shared --enable-static

make

make install

或者将mp3lame编译为动态链接库:

./configure --prefix=/shared

make

make install

→到https://www.wendangku.net/doc/ca4167591.html,farm.it/mplayer-win32.php下载已经编译的mp3lame库,解压后复制到“D:/msys/mingw”文件夹下。

接下来和前述步骤类似,切换到存放FFmpeg源代码的目录,在传递配置参数时要加入“--enable-libmp3lame”,即使用以下命令配置:

./configure --enable-static --enable-shared --enable-memalign-hack --enable-libmp3lame

配置后显示的信息如下图:

图5

可以看到这时libmp3lame已经为enabled,下面只要使用"make"命令编译就可以了。

最终我的FFmpeg配置为:

--enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-liba52 --enable-avisynth --enable-libdts --enable-libfaac --enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libogg --enable-libtheora --enable-libvorbis --enable-x264 --enable-xvid --enable-amr_nb --enable-amr_wb --cpu=i686 --enable-memalign-hack --extra-ldflags=-static

===============华丽的分隔线=========

另外一篇文章:

1、下载

SVN 客户端TortoiseSVN

https://www.wendangku.net/doc/ca4167591.html,/sourceforge/tortoisesvn/TortoiseSVN-1.4.8.12137-win32-svn-1.4.6. msi

MinGW + MSYS

https://www.wendangku.net/doc/ca4167591.html,/project/showfiles.php?group_id=2435

MinGW-5.1.3.exe (安装时,根据选项会自动下载相关编译器等)

MSYS-1.0.11-20071204.tar.bz2 (解压bin里面的文件,覆盖到安装好的MSYS相应目录) bash-3.1-MSYS-1.0.11-1.tar.bz2 (解压bin里面的文件,覆盖到安装好的MSYS相应目录) coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2 (需要bin里面的pr.exe,拷贝到MSYS相应目录,configure时候会用到这个工具)

http://gd.tuwien.ac.at/gnu/mingw/?fisel=0-9,a-z,A-Z

MSYS-1.0.11-2004.04.30-1.exe (MSYS安装程序)

2、安装

安装MinGW-5.1.3.exe

安装MSYS-1.0.11-2004.04.30-1.exe

配置MSYS 的etc 下的fstab,指定MinGW 的位置

3、获取FFmpeg 源码

用TortoiseSVN 将FFmpeg 源码checkout 到本地

svn://svn.mplayerhq.hu/ffmpeg/trunk

4、编译

./configure ....................................(各种参数)

Make//此处可能会出现编译错误,导致编译停止;如果顺利的话,编译大概持续半小时左右。make install

linux下x264库ARM交叉编译

linux下x264库ARM交叉编译 一、准备工作 1、x264库源码下载地址:http://videolan/developers/x264l 作者目前的版本是x264-snapshot-20160511-2245 2、编译器arm-none-Linux-gnueabi-gcc 二、编译步骤 1、解压安装包 tar -xzvf last_x264.tar.bz2 cd x264-snapshot-20160511-2245 2、修改配置文件 ./configure --disbale-asm 注意:这里加了--disable-asm选项是因为arm-none-linux-gnuabi工具链是没有汇编器,所以禁止此选项 由于未指定--prefix,所以程序会默认安装/usr/local/bin目录下 3、修改config.mak 主要是将相关选项修改为arm-none-linux-gnuabi相关的配置,修改内容如下: SYS_ARCH=ARM CC=arm-none-linux-gnueabi-gcc CFLAGS=-Wno-maybe-uninitialized -Wshadow -O3 -ffast-math -Wall -I. -I$(SRCPATH) -std=gnu99 -D_GNU_SOURCE -fomit-frame-pointer -fno-tree-vectorize LD=arm-none-linux-gnueabi-gcc -o 4、make 5、make install 我的本意是想生成lib264.a静态库的,很奇怪,在x264-snapshot-20160511-2245目录下可以找到lib264.a和lib264.so及相关的头文件,但是没有在/usr/lib/local目录下找到libx264.a,但是有x264。 有点不太理解,而且很多过程基本上按照的网上提供的方式参考操作的,很纳闷哪里出

opencv移植到arm详细过程

Opencv-2.1.0 的arm移植 我的环境 Host:Ubuntu 14.04 Target:tq2410 with Linux 2.6.30.4 Crossing Compiler:arm-linux-gcc 4.3.2 一交叉编译链的安装 1# cd /usr/local 解压,即可得到arm-none-linux-gnueabi 目录 # tar xzvf arm-none-linux-gnueabi-4.3.2.tgz -C ./ 2 编辑/etc/bash.bashrc文件添加把编译器路径到环境变量PA TH中, 只要在这个文件中添加下面这2 个语句即可: PATH=/usr/local/arm/4.3.2/bin:$PA TH export PA TH 3 编辑完毕后使用source /etc/bash.bashrc 命令执行以下这个文件,让设置生效,之后再输入: # arm-none-linux-gnueabi-gcc -v 如果输出下面的信息则表面设置成功: Using built-in specs. Target: arm-none-linux-gnueabi Configured with:/scratch/julian/lite-respin/linux/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-symvers=gnu

如何用FFmpeg编写一个简单播放器详细步骤介绍

如何用FFmpeg编写一个简单播放器详细步骤介绍(转载) FFmpeg, 播放器, 编写 FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具。FFMPEG 几乎为你把所有的繁重工作都做了,比如解码、编码、复用和解复用。这使得多媒体应用程序变得容易编写。它是一个简单的,用C编写的,快速的并且能够解码几乎所有你能用到的格式,当然也包括编码多种格式。 唯一的问题是它的文档基本上是没有的。有一个单独的指导讲了它的基本原理另外还有一个使用doxygen生成的文档。这就是为什么当我决定研究 FFMPEG来弄清楚音视频应用程序是如何工作的过程中,我决定把这个过程用文档的形式记录并且发布出来作为初学指导的原因。 在FFMPEG工程中有一个示例的程序叫作ffplay。它是一个用C编写的利用ffmpeg来实现完整视频播放的简单播放器。这个指导将从原来Martin Bohme写的一个更新版本的指导开始(我借鉴了一些),基于Fabrice Bellard的ffplay,我将从那里开发一个可以使用的视频播放器。在每一个指导中,我将介绍一个或者两个新的思想并且讲解我们如何来实现它。每一个指导都会有一个C源文件,你可以下载,编译并沿着这条思路来自己做。源文件将向你展示一个真正的程序是如何运行,我们如何来调用所有的部件,也将告诉你在这个指导中技术实现的细节并不重要。当我们结束这个指导的时候,我们将有一个少于1000行代码的可以工作的视频播放器。 在写播放器的过程中,我们将使用SDL来输出音频和视频。SDL是一个优秀的跨平台的多媒体库,被用在MPEG播放、模拟器和很多视频游戏中。你将需要下载并安装SDL开发库到你的系统中,以便于编译这个指导中的程序。 这篇指导适用于具有相当编程背景的人。至少至少应该懂得C并且有队列和互斥量等概念。你应当了解基本的多媒体中的像波形一类的概念,但是你不必知道的太多,因为我将在这篇指导中介绍很多这样的概念。 更新:我修正了在指导7和8中的一些代码错误,也添加-lavutil参数。欢迎给我发邮件到dranger@https://www.wendangku.net/doc/ca4167591.html,,讨论关于程序问题、疑问、注释、思路、特性等任何的问题 指导1:制作屏幕录像 源代码:tutorial01.c

视频解码中用到的ffmpeg交叉编译技巧

视频解码中用到的ffmpeg交叉编译技巧 一、简介 FFmpeg是一个集录制,转换,音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。 由于ffmpeg是基于linux开发的,源代码和windows下最常见的visual studio提供的c/c++编译器不兼容,因此不能直接使用msvc++编译,想要使用ffmpeg,需要在windows下配置一个类似Linux 的编译环境,并将ffmpeg编译为二进制库以后,再利用其进行进一步开发。 目前,windows下可直接使用的最新版本是由ffmpeg工程组,于2008年4月份发布的ffmpeg full sdk v3.2。该sdk尽可能的集成了更多的编解码器。 在应用中,使用该开发包存在2个缺陷,第一,该sdk编译基于ffmpeg r12790,编解码效率上,当前已经有了较大的提升;第二,该开发包包含了很多不需要的编解码器,需要尽可能减少开发包的体积及关联的库的个数。基于以上需求,需要自己编译出windows下可用动态库及静态库。 使用到的库文件有4个,libavcodec,libavformat,libavutil,libswscale,其中库 libavcodec,libavformat用于对媒体文件进行处理,如编解码;libavutil是一个通用的小型函数库,该库中实现了CRC校验码的产生,128位整数数学,最大公约数,整数开方,整数取对数,内存分配,大端小端格式的转换等功能,libswscale主要用于图像格式转换及缩放。因效率的需要,我们选择了 ffmpeg-mt版本,同时通过配置编译尽量减少相关文件的体积。 网上类似编译过程说明较多,但实际编译过程中碰到一些问题,这些问题的解决花费了不少时间,本文档对这一过程进行记录,以便后续维护及学习。 二、编译环境搭建 windows下ffmpeg编译环境有多种可选择方案。这里我们使用MinGW+MSYS。 1.下载mingw+msys并安装 https://www.wendangku.net/doc/ca4167591.html,/projects/mingw/ mingw,默认安装,在choose components时选择g++ compiler及MinGW Make Msys,默认安装, Do you wish to continue with the post install【yn】,y! Do you have mingw installed?【yn】,y Where is your mingw installation? C:/mingw

Ubuntu系统下,安装VMtools的问题---非常经典

一、在VMware虚拟机的菜单中点击:VM->install vmtools 二、Ubuntu自动挂载VMware T ools的虚拟光驱,并显示在桌面。 三、进入Ubuntu菜单:应用——附件——终端。 四、以下是在终端中安装vmware tools的步骤及命令: 1. sudo passwd root 2. su 3. cd /media 4. ls 5. cd /cdrom 6. ls 7. cp VMwareT ools-6.5.0-118166.tar.gz / 8. cd / 9. tar vzxf VMwareT ools-6.5.0-118166.tar.gz 10. cd vmware-tools-distrib/ 11. ./vmware-install.pl 12. 接下来一路回车:enter 13. 安装完毕,输入reboot命令,重起。 -------------------------------------------------------------------- 祝你成功! ps:第一步sudo passwd root是创建根用户密码,这时它会要求你输入管理员密码,ubuntu 在终端中输入密码是不显示的,所以不要以为出错了,别管它有没有显示,只管输入密码, 然后回车即可。第七和第九步的6.5.0-118166是VM版本号,这个要根据你的版本调整,比如你的vm版本是 6.5.1-126130,第七步的命令就应该改成:cp VMware T ools-6.5.1-126130.tar.gz/ 安装好处:和windows共享文件夹鼠标能自由出入windows和虚拟机linux https://www.wendangku.net/doc/ca4167591.html,/white210/blog/item/c4d54ceecc6579252cf5346c.html ubuntu 7.10 安装vmtools后显示及鼠标问题的解决方法 https://www.wendangku.net/doc/ca4167591.html,/viewtopic.php?t=93845 vmhgfs和vmxnet的修正 https://www.wendangku.net/doc/ca4167591.html,/viewtopic.php?f=65&t=94997&start=0

虚拟机Linux 中VMTOOLS的安装方法

Linux中VMTOOLS的安装方法在经历多番波折之后,终于将虚拟机linux中的vmtools工具安装上,安装上之后,物理机与虚拟机之间可以文件移动,鼠标不用再按ALT+CTRL切换,挺方便的,而且虚拟机全屏后,视觉效果比一个小窗口好多了!以下均为个人见解,仅供参考! 在linux安装好的前提之下,进行如下操作: 第一步:在你的linux虚拟机上右击选择“移除设备”→“CD/DVD(IDE)”→“设置” 然后在如图的选项中找到你安装VMware的文件夹中的linux.iso

以上操作是将vmtools的安装包挂载在linux虚拟机上,(如果是windows系统的虚拟机安装vmtools,按照上面的方法找到windows.iso即可安装,)但是linux的还必须做如下操作 当linux.iso挂载在虚拟机上之后,会看到虚拟机内有VMtools的图标,如下图所示:

第二步:打开文本操作,也就是命令行(快捷键CTRL+ALT+F1),空白处右键选择“打开终端”,并且进入root管理员模式,可用su-命令进入

第三步:在命令行后面输入如下命令(注意大小写和空格,同时每行命令后记住回车) mount-t iso9660/dev/cdrom/mnt (加载CDROM设备,并且CDROM为只读属性。)cp/mnt/VMwareTools-8.8.2-590212.tar.gz/tmp (将该软件包持拷贝到LINUX的TMP目录下,注意:红色字体是你的vmtools文件名,如果不同,请自行更改) umount/dev/cdrom(舍载CDROM) cd/tmp(进入TMP目录) tar zxf VMwareTools-8.8.2-590212.tar.gz(解压该软件包) cd vmware-linux-tools (进入解压后的目录,红色为解压后的文件夹,请在linux系统中查看具体文件夹名称,如果不同,请自行更改) ./vmware-install.pl (运行安装命令,系统开始安装vmware tools,红色部分是解压文件夹中的执行文件,注意查看文件名,如果不同,请自行更改)

linux编译ffmpeg支持x264,x265

linux 编译ffmpeg 支持x264, x265 1. 前言 本教程涉及的ffmpeg, x264, x2652. 环境依赖 2.1 删除系统中安装的ffmpeg等库 [plain] view plain copy sudo apt-get --purge remove ffmpeg mplayer x264 x265 2.2 安装依赖库 [plain] view plain copy sudo apt-get update sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \ libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev 注: 服务器版本可忽略 libsdl1.2-dev libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev2.3 下载源代码 (1) ffmpeg [plain] view plain copy git clone git://https://www.wendangku.net/doc/ca4167591.html,/ffmpeg.git ffmpeg

(2) x264[plain] view plain copy <pre name="code" class="plain"><pre name="code" class="plain">git clone git://https://www.wendangku.net/doc/ca4167591.html,/x264.git (3) x265[plain] view plain copy hg clone https://https://www.wendangku.net/doc/ca4167591.html,/multicoreware/x265 (4) yasm yasm 是x86平台的一个汇编优化器, 能够加快ffmpeg x264的编译 [plain] view plain copy wget https://www.wendangku.net/doc/ca4167591.html,/projects/yasm/releases/yasm-1.3.0.ta r.gz tar xzvf yasm-1.3.0.tar.gz 3. 编译 3.1 配置编译输出目录 [plain] view plain copy export FFMPEG_PATH="YOUR_PATH" export PATH="$FFMPEG_PATH/bin:$PATH" 例如我输出目录为$HOME/ffmpeg_2.6.3/build_out 那么: [plain] view plain copy export

linphone语音版移植

Linphone在Linux X86下的编译 (一) Linphone依赖库准备: libogg-1.1.3.tar.gz(https://www.wendangku.net/doc/ca4167591.html,/releases/ogg/libogg-1.1.3.tar.gz) speex-1.2beta3.tar.gz(依赖于libogg) libosip2-3.3.0.tar.gz(https://www.wendangku.net/doc/ca4167591.html,/gnu/osip/libosip2-3.3.0.tar.gz) libeXosip2-3.3.0.tar.gz(https://www.wendangku.net/doc/ca4167591.html,/Unix/NonGNU/exosip/libeXosip2-3.3.0.tar.gz) 依赖库打包下载地址:https://www.wendangku.net/doc/ca4167591.html,/source/1743975 readline(optional) intltool-0.35.0.tar.gz(optional) ffmpeg(提供Linphone视频支持,如不需视频功能可不要) Linphone版本:linphone-3.2.0.tar.gz O S: Fedora9(VmWare下) (二) 在Linux的/home/cena/目录下新建目录linphone在其中建立sources、build、x86_target、arm_target ;注:这里cena为用户名,以下类同![root @BCD cena]# mkdir –p /home/cena/linphone/sources,/home/cena/linphone/build \ /home/cena/linphone/x86_target, /home/cena/linphone/arm_target 将相应的库与Linphone源码拷贝到sources目录下 |soureces --| libogg-1.1.3.tar.gz --| libosip2-3.3.0.tar.gz

linphone分析

目录 1 LINP HONE 的编译3 1.1 LINPHONE 在ARM 上的编译环境说明3 1.2 LINPHONE 依赖的库3 1.3 LINPHONE 编译脚本3 1.4 编译过程中的问题4 2 LINP HONE 代码分析4 2.1 LINPHONE 的初始化分析4 2.1.1 LINPHONEC 的初始化5 2.1.2 LINPHONE_CORE 的初始化5 2.1.3 ORTP 的初始化5 2.1.4 MEDIASTREAM2 的初始化6 2.1.5 EXOSIP 的初始化6 2.2 LINPHONE 的通话过程分析6 2.2.1 LINPHONE 的命令处理分析7 2.2.2 LINPHONE 的呼叫过程分析7 2.2.3 LINPHONE 的通话过程分析8 2.2.4 LINPHONE 的响应过程分析8 2.3 LINPHONE 中创建以及应用自定义过滤器9 2.3.1 过滤器的基本功能9 2.3.2 过滤器的通用接口10 2.3.3 自定义过滤器10 Linphone 的编译与代码分析 1 Linphone 的编译 1.1 Linphone 在arm 上的编译环境说明 Linphone 在arm 上编译的时候,时常会碰到一些问题,有时候想办法解决了相关的问题,但编译出来的Linphone 在板子上的运行仍然不稳定,或者不能通话。 如果条件允许的话,当碰到这些问题之后,可以换其它的工具链进行编译。我最初编译Linphone 的时候采用的是xscale270 板子自带的工具链,GCC3.4.3 以及uclibc。经过很痛苦 的一番折腾之后,所以的代码最终都编译通过,但是编译出来的linphonec 在板子上运行在通话开始之后总是崩溃。通过GDB 调试,发现是多线程的问题引起的,于是编译了一个线程结构相当的程序,但是测试没有发现问题。 最后,我改用GCC4.0.0 以及Glibc-2.3.5 基本上没有碰到什么问题,直接编译通过,并 且在板子上正常运行。 1.2 Linphone 依赖的库 除了上面所提到的Gcc,Glibc 以及系统的基本库外我主要编译了下面的程序包。 序号库名称说明 1 ReadLine 一个终端显示库,Linphone 会用到它时里面的事件循环机制来读取会话事件。 2 ffmpeg 音视频编解码库 3 Speex 专为通话过程设计的音频编码库 4 libtheora 视频压缩编码库 5 libfaac mpeg4 的音频编码器 6 libfaad2 AAC 音频解码器

ARM视频监控系统投标书

海思工作室 杭州汇文教育咨询有限公司 ——ARM监控系统投标书 海思工作室

目录 一、公司介绍及优势 (2) 1.1公司简介 (2) 1.2系统定位和意义 (2) 1.3公司在本项目中的优势 (3) 二、项目技术方案 (3) 2.1系统框架 (3) 2.2项目目标 (4) 2.3技术路线 (4) 2.3.1 构建基于S3C2440的Linux平台 (4) 2.3.2 视频监控终端软件的设计 (5) 2.3.3 视频监控服务器软件的设计 (6) 2.4使用与维护 (8) 2.4.1 维护简介 (8) 2.4.2 承诺与服务 (9) 三、项目管理及实施计划 (10) 3.1实施计划 (10) 3.2项目管理方案 (10) 3.2.1 整体管理 (10) 3.2.2 会议制度 (11) 3.2.3 临时工作调配 (12) 3.3质量控制管理 (12) 3.3.1 质量基本规划 (12) 3.3.2 质量保证 (12) 3.3.3 质量检查 (13) 3.3.4 风险控制 (13) 四、资源列表及项目报价 (13) 4.1所需资源列表 (13) 4.1.1 硬件资源 (13) 4.1.2 软件资源 (14) 4.1.3 人力资源 (14) 4.2项目报价 (14)

ARM嵌入式视频监控系统投标书首先,感谢杭州汇文教育咨询有限公司的关注,以及提供我们参与此次项目的机会,让我们工作室的学员们能够更好地积累实战经验,为踏上社会之路做充分的准备。冀望于此次接触机会及交流过程,能够成为中国计量学院和杭州汇文教育咨询有限公司打开双方合作之门的良好基石。 在调查和理解ARM视频监控系统的目标,以及对视频监控系统相关背景分析的基础上,我们撰写本文。旨在向杭州汇文教育咨询有限公司介绍我们对此项目的思路及相关建议,且展示海思工作室在此次项目上的计划与执行能力。 一、公司介绍及优势 1.1 公司简介 海思工作室(HSS)于2010年3月12日于成立于中国计量学院,本着“happy 快乐、strive奋斗、solidarity团结”的宗旨,致力于嵌入式软件项目开发和制作。目前公司有12名优秀成员。 虽然,本公司成立时间不长,但是公司成员从大一开始就已经学习掌握C语言知识,距今已近三年,因此底蕴深厚,对于C语言和嵌入式也是非常了解。部分成员在校期间曾获多次奖学金和各类奖项。我们竭尽所能把一切资源投在产品开发上,力求高效、质优、价廉、款佳。傲视同仁,迎合市场所需,满足客户所求。锐意进取,精益求精。面对任何机遇与挑战,我们正以饱满的热情,坚定不移的信心,在嵌入式的道路上阔步前进。未来的日子里,我们将继续以最实惠的价格,最优质的产品、最完善的服务,回报新老客户。以一流的人才,一流的管理,一流的的服务,立足中国,面向世界,与您携手并肩,共创美好的明天。 1.2 系统定位和意义 图像与视频监控系统是应用计算机与通讯技术实现对目标区域信息监控的系统,常用于交通,能源,公安,电信,军事等部门。随着计算机技术及网络技术的迅猛发展,视频监控系统的发展趋势必然是全面数字化、网络化,即采用嵌入式网络摄像机,利用网络进行传输,利用嵌入式监控设备体积小巧、性能稳定、

语音模块使用说明(tmp)

语音模块使用说明 一、软件包 gsm-1.0-pl12 GSM编解码库 alsa-lib-1.0.14 ALSA用户层控制函数库,内核语音模块需要支持ALSA alsa-utils-1.0.14 ALSA工具集,依赖于alsa-lib,该工具集提供amixer进行音量调节 libogg-1.1.4 通用开源语音编解码库 speex-1..2rc1 SPEEX开源语音编码协议库,编译linphone需要该库 live555-20100409 livemedia 多媒体支持库,vlc需要该库支持语音多播功能 ffmpeg-0.5 多媒体编码支持库,支持多种格式语音、视频编解码,本项目中使用到该库的a-law, u-law 语音编解码用于语音多播功能 libosip2-3.3.0 SIP协议库 libeXosip2-3.3.0 基于libosip2的SIP协议扩展库,支持更方便的SIP协议API,编译linphone需要该库 linphone-3.2.1 SIP软件电话,需要语音编解码库libogg,gsm,speex的支持,以及SIP协议库libosip2,libeXosip2的支持 vlc VLC流媒体软件,支持流媒体播放功能,需要语音编解码库ffmpeg,流媒体广播库live555的支持 net-control 网络控制功能软件包,提供与语音控制相关的网络接口

二、语音功能与软件包对照列表 点对点呼叫功能: 该功能使用linphone软件包提供的linphonec配合linphonecsh命令接口实现,默认情况下所有需要支持该功能的终端在启动时自动运行linphonec,需要呼叫时由网络模块调用linphonecsh命令接口控制linphonec完成相关功能。 点对多点广播功能: 该功能使用vlc软件包提供的vlc完成,默认情况下vlc不运行,在需要进行网络广播时,由网络控制模块调用vlc加入指定的多播组实现语音广播功能,广播完成后网络控制模块终止vlc的运行。 三、语音模块软件包的编译 前置条件: 安装交叉编译工具链 设置编译环境: 根据编译主机目录环境及交叉编译工具链的安装路径,设定sip-phone/目录下的env.sh.sample中的参数,设置完成后使用 $source ./env.sh.sample 导入编译设定参数 开始编译: 完成编译环境的设置后,运行自动编译脚本 $./make_world.sh 将自动编译生成根文件系统 四、编译环境各目录及文件说明 packages/目录中存放语音模块相关软件包的源代码 skeleton/目录中存放参考根文件系统的目录结构框架及基本配置文件 tools/目录中存放编译各软件包以及生成根文件系统的脚本 env.sh.example参考的编译环境设置文件

解决Linux安装 VMware tools 工具的方法

解决Linux安装VMware tools 工具的方法 VMware虚拟机中如何安装VMWare-Tools详解好处:可以支持图形界面,可以支持共享文件功能等 1、以root身份登陆计算机 2、开始安装Vmware 选择VM-->install VMware Tools 3、桌面右击打开终端 输入如下命令[root@localhost ~]# mkdir /mnt/cdrom输入注意空格

4、 root@localhost ~]# cd /mnt/cdrom/ [root@localhost cdrom]# ls 显示其下有哪些文件, 类似 windows中的dir 5、将文件拷贝至根目录下的tmp这个临时目录下 [root@localhost cdrom]# cp VMwareTools-7.8.4-126130.tar.gz /tmp //拷贝到/tmp下这里如果VMware的版本不同出现的数字也是不同的,不过差不过,至于这串字符你要是怕输错了,可以复制粘贴右击 6、进入tmp文件夹 [root@localhost cdrom]# cd /tmp/ [root@localhost tmp]# tar zxvf VMwareTools-6.5.0-118166.tar.gz //解压文件

7、[root@localhost tmp]# cd vmware-tools-distrib [root@localhost tmp]# ls [root@localhost vmware-tools-distrib]# ./vmware-install.pl //安装开始 8、最后用“./install.pl”命令来运行该安装程序,然后根据屏幕提示一路回车。到此整个安装过程算是完成了。 9、分辨率这块默认17以下的你写个常用的11 800*600那种的也行

Opencv 交叉编译

目录 1所需要的库及其依赖关系3 2准备工作3 3各个平台配置4 3.1安装设置 (4) 3.1.1armv7-linux平台 (4) 3.1.2aarch64-linux平台 (4) 3.1.3armv7-android平台 (4) 3.1.4aarch64-android平台 (5) 3.2zlib安装 (5) 3.2.1armv7-linux平台 (5) 3.2.2aarch64-linux平台 (5) 3.2.3armv7-android平台 (6) 3.2.4aarch64-android平台 (6) 3.3libpng安装 (6) 3.3.1armv7-linux平台 (6) 3.3.2aarch64-linux平台 (7) 3.3.3armv7-android平台 (7) 3.3.4aarch64-android平台 (7) 3.4libjpeg安装 (8) 3.4.1armv7-linux平台 (8) 3.4.2aarch64-linux平台 (8) 3.4.3armv7-android平台 (8) 3.4.4aarch64-android平台 (9) 3.5yasm安装 (9) 3.5.1armv7-linux平台 (9)

3.5.2aarch64-linux平台 (9) 3.5.3armv7-android平台 (10) 3.5.4aarch64-android平台 (10) 3.6x264安装 (10) 3.6.1armv7-linux平台 (10) 3.6.2aarch64-linux平台 (11) 3.6.3armv7-android平台 (11) 3.6.4aarch64-android平台 (12) 3.7libv4l安装 (12) 3.7.1armv7-linux平台 (12) 3.8xvid安装 (12) 3.8.1armv7-linux平台 (12) 3.8.2aarch64-linux平台 (13) 3.8.3armv7-android平台 (13) 3.8.4aarch64-android平台 (13) 3.9ffmpeg安装 (13) 3.9.1armv7-linux平台 (13) 3.9.2aarch64-linux平台 (14) 3.9.3armv7-android平台 (15) 3.9.4aarch64-android平台 (15) 3.10opencv安装 (16) 3.10.1armv7-linux平台 (16) 3.10.2aarch64-linux平台 (16) 3.10.3armv7-android平台 (17) 3.10.4aarch64-android平台 (18)

windows下使用MinGW+msys编译ffmpeg

C++:windows下使用MinGW+msys编译ffmpeg FFmpeg是在Linux平台下开发的,但它同样也可以在其它操作系统环境中编译运行,本文介绍的就是在windowsXP下编译FFmpeg。 一准备环境: 1 下载mingw 和MSYS 去https://www.wendangku.net/doc/ca4167591.html,/projects/mingw/ 下载 A 点击“DownLoad mingw-get-inst-...exe”; B 切换到页面:download? Check your browser's security bar, or try a direct link, or try another mirror. ; C 点击“direct link”下载类似:mingw-get-inst-20110802.exe 的文件。 提示:msys此处就不用下载了,mingw-get-inst-20110802.exe 中已经包含了msys1.0,后面安装的时候就可以看到该选项。 2 下载yasm ffmpeg编译里面的汇编代码需要yasm.exe 去官网:https://www.wendangku.net/doc/ca4167591.html,/Download.html 下载 直接下载:Win32 .exe (for general use on 32-bit Windows) 文件名为:yasm-1.1.0-win32.exe 3 下载ffmpeg ffmpeg可以到https://www.wendangku.net/doc/ca4167591.html,/releases/ 下载 本人选择的是最新版本:ffmpeg-0.8.5.tar.gz 文件名为:ffmpeg-0.8.5.tar.gz 4 下载SDL SDL下载可以到:https://www.wendangku.net/doc/ca4167591.html,/download-1.2.php 选择:SDL-1.2.14.tar.gz - GPG signed 此版本需要自己编译,后面会解释为什么下载该版本,而不下载编译好的 SDL-devel-1.2.14-mingw32.tar.gz (Mingw32) 5 下载pthreadGC2.dll pthreadgc2.dll是功能强大的处理数字化影视作品编辑软件premiere6运行所需

Android 音视频编解码

Android 音视频编解码 ubuntu下ndk编译ffmpeg0.8.1 ffmpeg最新版本有些问题,比如jni/liblibavcodec/ac3enc_combined.c在最新的版本中已经没有了,但是又多了一个ac3enc_template.c的文件。虽然更新版本对于开发人员可以使用到更多的功能,但是如果这样乱改的话真的好无语,非常讨厌这种更新版本的不一致性,唉,只是抱怨一下 我使用的还是稍微老一点的版本ffmpeg 0.8.1的,至少老的版本能搜到更多的资料,也比较稳定。 ffmpeg版本:ffmpeg 0.8.1(最新版本是0.10,但是有很多问题) NDK版本:ndk r6(ndk r7编译的话会出现各种错误) 机器:32位 系统:ubuntu 注意:ndk r6+ffmpeg0.8.1+Android.mk+config.sh是经过测试过的,可以生成。如果你用的其他版本的 会出现各种问题 前提:需要你配置好NDK的环境,还是说说吧 一、下载并配置NDK环境变量(ubuntu下,windows下请使用cygwin) 1、到https://www.wendangku.net/doc/ca4167591.html,/sdk/ndk/index.html下载NDK 这里,ndk r6版本的下载地址是: https://www.wendangku.net/doc/ca4167591.html,/android/ndk/android-ndk-r6-linux-x86.tar.bz2 2、解压包到/home/loulijun/android/目录下 3、$vim ~/.bashrc 在里面添加如下信息 export NDK=/home/loulijun/android/android-ndk-r6107 export PATH=${PATH}:$NDK 4、$source ~/.bashrc 使其生效 注意:最新r7版本出现了一个关于awk问题,这个awk是64位的,所以如果你是32位机会遇到,具体解决办法见我的上篇博客: https://www.wendangku.net/doc/ca4167591.html,/loulijun/archive/2012/02/26/2368787.html

虚拟机vmware tools的安装

不懂得安装虚拟机VMware tools的想必都是刚在虚拟机上玩系统初学者,无疑我们对虚拟机的了解并不深,这使得本来很容易安装的VMware tools在我们安装时变得复杂而又难以琢磨,到头一直的付出因此却成空了。我自己在第一次安装虚拟机VMware tools时,的确遇到了许多得问题,上网查到得答案说得不是十分完整,全是只注重过程,因此,我在此详细的写完VMware tools的安装全程,让更多的初学者完全轻松的安装VMware tools。 在安装虚拟机VMware tools之前,你需要知道如下概念: (1)虚拟机有免安装绿色版,也有非免安装绿色版,一般非免安装绿色版在你安装完虚拟机后,其目录下会自动生成VMware tools安装文件(windows.iso、linux.iso),而免安装绿色版因为是压缩包,里面有没有VMware tools安装文件那就要看发布这个包的人有没有把VMware tools安装文件打包在里面咯,如果没有,那你就要麻烦点,自己去下载咯。 (2)虚拟机可以装多个系统、多种系统(只要你硬盘够呛~),这大家都知道,然而VMware tools 不是针对虚拟机的,而是针对系统的,也就是说假如你虚拟机装有两个系统(可以都是Windows XP),其中一个系统中安装了VMware tools,那么就只有安装了VMware tools的这个系统才能使用VMware tools的功能,另外一个系统并不能使用VMware tools,不要以为在一个系统中装了VMware tools,以后我装什么系统就不用安装VMware tools都可以使用VMware tools了,你哪个系统需要使用VMware tools,哪个系统就要安装VMware tools,这是一一对应的关系。(3)VMware tools安装根据系统,就有不同的VMware tools镜像,不过大家都是ISO格式的包(windows.iso、linux.iso),安装的时候就要根据你的虚拟系统来选择再安装了,不要见到是*.iso 格式就选了,比如Linux有Linux的VMware tools,一般命名为linux.iso,它最终是通过运行linux.iso 包里面*.pl 格式的文件进行VMware tools安装的,如果你是XP系统,VMware tools安装包一般命名为windows.iso,它最终是通过运行windows.iso包里面steup.exe来运行安装的。 好了,你只需要弄清这三点,基本上是完全可以轻松安装VMware tools了,下面我给出安装过程。 windows VMware tools安装步骤: (1)在CD-ROM虚拟光驱中选择使用ISO镜像,找到VMWARE TOOLS 安装文件,如D:\VMware\VMware Workstation\Programs\windows.iso (2)启动进入windows (3)退出到windows,在虚拟机菜单栏中点击虚拟机-> 安装VMWARE TOOLS 子菜单,会弹出对话框,点击"确认" 安装 (4)此时,它会自动运行安装,你只管按“下一步”就可以安装完成了,如果它不自动运行的话,那你就进入光驱(G:)盘,找到一个stuep.exe文件双击安装就好,就这简单。 linux VMware tools安装步骤: (1)在CD-ROM虚拟光驱中选择使用ISO镜像,找到VMWARE TOOLS 安装文件,如D:\VMware\VMware Workstation\Programs\linux.iso (2)以ROOT身份进入LINUX (3)进入linux新建一个终端,输入/sbin/telinit 3 进入纯文本模式,然后在纯文本模式下再次用root身份登陆 (4)退出到windows,在虚拟机菜单栏中点击虚拟机-> 安装VMWARE TOOLS 子菜单,会弹出对话框,点击"确认" 安装 (5 挂载光驱mount /dev/cdrom /mnt/cdrom (注意命令中输入的空格)这时,你的linux.iso 里面的文件就相当于windows光盘里面的文件了

ffmpeg、jrtp、SDL的交叉编译

ffmpeg、jrtp、SDL的交叉编译 https://www.wendangku.net/doc/ca4167591.html,/weili8607/blog/item/b8c30a3c1ad80308baa16777.html 2009-05-26 10:33 因为需要,重新使用最新的交叉编译器arm-linux-gcc 4.3.2编译了所需要的SDL、ffmpeg、rtp库。其他交叉编译器过程类似,可能遇到不同的问题,视情况解决。 一、SDL的编译 SDL-1.2.13。 ./configure --prefix=/weili/SDL --disable-video-qtopia --disable-video-dummy --disable-video-fbcon --disable-video-dga --disable-arts --disable-esd --disable-alsa --disable-cdrom --disable-video-x11 --disable-nasm --target=arm-linux --host=arm-linux --enable-video-fbcon make make install 看情况改变prefix目录和各种选项。make install之后便在prefix目录下生成所需的动态库和include头文件等等。 二、jrtp的编译 编译rtp库要先编译jthread库,然后在编译jrtp库。我使用的是jthread-1.2.1.tar.gz jrtplib-3.7.1.tar.gz。 1. 进入jthread-1. 2.1 ./configure -host=arm-linux -prefix=/weili/jthread/ make make install 这样jthread库就安装在了/weili/jthread/lib下面了 libjthread.so 2.进入jrtplib- 3.7.1 ./configure --host=arm-linux -prefix=/weili/jrtp/

Android自定义so文件调用ffmpeg.so详解

Android自定义so文件调用ffmpeg.so详解 在使用一下介绍内容时候,我认为所有读者都已具备一下水平: 1、会建立android项目工程 2、了解NDK编程入门知识 3、已成功编译或在网上已下载到ffmpeg.so动态库文件 我自己成功编译ffmpeg.so文件:使用vitamio提供的.sh脚本文件在linux环境下编译的,编译过程此处略去一万字… 1、在NDK的samples下建立android工程,此处我建立的是HelloFFmpeg,如下图: 2、编写本地函数声明,NDK的samples目录下有一个hello-jni的例子:

使用UltraEdit打开HelloJni.java文件: 将该文件的的一下内容拷贝到HelloFFmpeg工程的MainActivity.java的相应位置:(1)、拷贝onCreate中的内容:

(2)、拷贝本地函数声明: (3)、拷贝库文件加载: 打开拷贝完成的HelloFFmpeg工程下的MainActivity.java文件,如下:

新建立jni目录: 在jni目录下建立再建立jni目录

这里通过cmd进入第二个jni目录: 输入以下内容生成.h头文件:

此时会报错,因为咱们的本地函数和本地库的引用均在主类MainActivity中声明引用的,一般重新创建一个类进行声明引用的时候是不会出错的。但此时我给大家提供一个解决该错误的方法: 进入src目录中,使用下面的语句: 其中: -d:代表.h所在的目录,如果目录不存在,则自动创建一个 ../jni/jni:代表上级目录中的jni目录,.h文件将存放在此处

相关文档