搜档网
当前位置:搜档网 › Ubuntu下编译安装FFmpeg

Ubuntu下编译安装FFmpeg

Ubuntu下编译安装FFmpeg
Ubuntu下编译安装FFmpeg

一个简单的ns2实验全过程

实验名称:比较tcp和udp的丢包行为

试验目的:

1. 熟练用ns2做网络仿真试验的整个流程;

2. 练习写tcl脚本,了解怎么应用http和rtp;

3. 练习用awk处理trace数据,了解怎么计算丢包率;

4. 练习用gnuplot绘制曲线图,熟练gnuplot的使用。

实验步骤:

1。确定网络拓扑。

一个简单的三个节点的拓扑,两个运行cbr(const-bitrate)应用的发送结点,一个接收结点。一条链路使用tcp链接,一条链路使用udp连接。如图。

2。写tcl脚本。

# jiqing 2007-6-5

# this script is to compare the loss rates of http and rtp.

set ns [new Simulator]

#open a nam trace file

set nf [open out.nam w]

$ns namtrace-all $nf

#open a trace file

set tf [open out.tr w]

$ns trace-all $tf

#finish procedure

proc finish {} {

global ns nf tf

$ns flush-trace

close $nf

close $tf

exec ./nam out.nam &

exit 0

}

#create nodes

set node(http) [$ns node]

set node(rtp) [$ns node]

set node(recv) [$ns node]

#create links

$ns duplex-link $node(http) $node(recv) 0.9Mb 10ms DropTail $ns duplex-link $node(rtp) $node(recv) 0.9Mb 10ms DropTail

#set queue size

$ns queue-limit $node(http) $node(recv) 10

$ns queue-limit $node(rtp) $node(recv) 10

#relayout nodes

$ns duplex-link-op $node(http) $node(recv) orient right-down $ns duplex-link-op $node(rtp) $node(recv) orient right-up

#set colors

$ns color 1 blue

$ns color 2 red

#set a tcp connection

set tcp [new Agent/TCP]

$ns attach-agent $node(http) $tcp

set sink [new Agent/TCPSink]

$ns attach-agent $node(recv) $sink

$ns connect $tcp $sink

$tcp set fid_ 1

#set a cbr above tcp connection

set cbr(http) [new Application/Traffic/CBR]

$cbr(http) attach-agent $tcp

$cbr(http) set type_ CBR

$cbr(http) set packet_size_ 1000

$cbr(http) set rate_ 1mb

$cbr(http) set random_ false

#set a rtp connection

set rtp [new Agent/UDP]

$ns attach-agent $node(rtp) $rtp

set null [new Agent/Null]

$ns attach-agent $node(recv) $null

$ns connect $rtp $null

$rtp set fid_ 2

#set a cbr above tcp connection

set cbr(rtp) [new Application/Traffic/CBR]

$cbr(rtp) attach-agent $rtp

$cbr(rtp) set type_ CBR

$cbr(rtp) set packet_size_ 1000

$cbr(rtp) set rate_ 1mb

$cbr(rtp) set random_ false

#schedule

$ns at 0.1 "$cbr(http) start"

$ns at 0.1 "$cbr(rtp) start"

$ns at 4.0 "$cbr(http) stop"

$ns at 4.0 "$cbr(rtp) stop"

$ns at 4.1 "finish"

$ns run

3。仿真。在命令提示符下输入ns http_vs_rtp.tcl,回车。仿真结束,会调用nam演示动画。4。用awk处理trace数据。

awk的语法和c很像,不同的是awk中使用变量不用事先声明。一个awk程序的结构如下面所示:

BEGIN{

...

}

{

...

}

END{

...

}

可见,程序分为三块,BEGIN只在程序进入时执行一次,END只在程序退出前执行一次。而中间的程序块会在处理每行数据时都执行一次。

这里用awk计算tcp和udp连接的丢包率,具体程序如下:

BEGIN {

tcp_droped = 0;

udp_droped = 0;

last_tcp = -1;

last_udp = -1;

total_tcp = 0;

total_udp = 0;

i = 0;

}

{

action = $1;

time = $2;

type = $5;

seq_no = $11;

if(action == "+" && type == "tcp"){

total_tcp = total_tcp + 1;

}

if(action == "+" && type == "cbr"){

total_udp = total_udp + 1;

}

if(action=="r"){

if(type=="tcp"){

if(seq_no != last_tcp + 1){

tcp_droped = tcp_droped + 1;

}

last_tcp = seq_no;

}

if(type=="cbr"){

if(seq_no != last_udp + 1){

udp_droped = udp_droped + 1;

}

last_udp = seq_no;

}

time_point[i] = time;

if(total_tcp > 0)

tcp_loss[i] = tcp_droped / total_tcp * 100;

else

tcp_loss[i] = 0;

if(total_udp > 0)

udp_loss[i] = udp_droped / total_udp * 100;

else

udp_loss[i] = 0;

i = i + 1;

}

}

END {

printf("%.2f\t%.2f\t%.2f\n",0,0,0);

for(j=0;j < i; i++){

printf("%.2f\t%.2f\t%.2f\n",time_point[j], tcp_loss[j], udp_loss[j]);

}

}

awk程序写好后,在命令行下输入awk -f measure_loss.awk > http_rtp.txt,将把printf输出的结果写入http_rtp.txt。参见http_rtp.txt。

。。。。。。。

0.91 6.45 0.00

0.91 6.45 0.00

0.92 6.38 0.00

0.92 6.38 0.00

0.92 6.38 0.00

0.93 6.32 0.96

0.93 6.32 0.96

0.93 6.32 0.95

0.94 6.25 0.95

0.94 6.25 0.94

0.94 6.25 0.94

0.95 6.19 0.94

0.95 6.19 0.93

0.95 6.19 0.93

0.95 6.12 0.93

0.96 6.12 0.93

。。。。。。。

5。用gnuplot画图。

怎么进入和退出gnuplot?

开启xserver(运行startxwin.bat)后,输入gnuplot,将进入交互式的画图。如果要退出,输入quit。

http_rtp.txt中有三列数据,分别是时间、tcp丢包率、udp丢包率。

怎么控制gnuplot选择其中两列作为x,y轴的数据呢?

plot "filename" using 2将会把第二列作为y轴的数据,第一列默认是x轴的数据。

plot "filename" using 2:3将把第二列作为x轴的数据,第三列作为y轴的数据。

怎么在一张图中绘制多条线?

多个数据源之间用逗号隔开就可以了,如:

plot "filename1" using 2, "filename2" using 2:3, ...

怎么把图输出为图片?

set terminal gif //设置输出格式

set output "http_rtp.gif" //设置输出文件名

replot //输出

怎么为图片增加说明?

set title "title" //设置标题

set xlabel "xlabel" //设置x轴说明

set ylabel "ylabel" //设置y轴说明

实验中遇到的困难及解决办法:

1。问题:不知道怎么使用rtp agent。

解决:找不到关于这方面的资料,先用udp代替。

2。问题:不知道怎么使用http

解决:关于http的使用ns-2手册39.7web cache一节,可供借鉴。但是建立一个http

应用比较麻烦,需要http/server, http/client, http/cache。这里用cbr来代替。

实验结果:

1。当链路带宽设为1mb,tcp和udp速率都为1000时,tcp有丢包现象,udp没有丢包现象,这大概是因为tcp有确认报文,而udp没有的缘故。当把链路带宽都设定为0.9Mb,tcp 和udp都有严重的丢包现象。可见虽然tcp有重传机制,但在带宽太低的情况下,仍然会丢包。

2。最终的曲线图说明,tcp的拥塞控制机制发挥了作用,丢包率逐步下降。而udp没有拥塞控制机制,当缓冲队列满后,丢包率迅速上升。

参考文献:

1. The ns Manual.

2. ja2 chung, mark claypool. ns by example.

3. 柯志亨的个人站点:http://140.116.72.80/~smallko/。

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。 有点不太理解,而且很多过程基本上按照的网上提供的方式参考操作的,很纳闷哪里出

Ubuntu编译安装Linux内核过程(整理版)

Ubuntu编译Linux内核过程 一、首先解决Ubuntu代理上网的问题 1、这种方法要用到/etc/apt/文件夹下的apt.conf文件。如果您希望apt-get(而不是其他应用程序)一直使用http代理,您可以使用这种方式。 注意:某些情况下,系统安装过程中没有建立apt配置文件。下面的操作将视情况修改现有的配置文件或者新建配置文件。 sudo gedit /etc/apt/apt.conf在您的apt.conf文件中加入下面这行(根据你的实际情况替换yourproxyaddress和proxyport)。Acquire::http::Proxy "http://yourproxyaddress:proxyport";保存apt.conf文件。 如果代理服务器需要登录,那么可以在指定代理服务器地址的时候,用如下格式(根据情况把username,password, yourproxyaddress 和proxyport替换为相应内容): http_proxy=http://username:password@yourproxyaddress:proxyp ort 2、然后在新立得设置http代理,在系统--系统管理--新立得软件包管理器--设置--首选项--网络里也要设置http的代理 二、下载源代码和编译软件的准备 下载内核源代码:https://www.sodocs.net/doc/3514011841.html,/ 注意,点击2.6.39.3内核的F版,即完整版。

如果你懒得去网站点联接,运行下列命令: 代码: $cd ~ $wget https://www.sodocs.net/doc/3514011841.html,/pub/linux/kernel/v2.6/linux-2.6.39.3. tar.bz2 安装有关编译程序。安装make ,gcc, make-kpkg,运行menuconfig 等等和编译内核相关的工具。 安装不了,请检查/etc/apt/sources.list 文件。 安装所需工具包有关命令: 代码: $sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot 三、解压源代码 注意,网上很多教程上说应该解压到 /usr/src,纯属以讹传讹,linux掌门人linus说解压到任何目录上都可以。当然,linus的说法是正确的。先将压缩包复制到usr/src目录下,然后将压缩包解压到user/src目录下。 如果压缩包现在放在个人主目录的桌面上,则运行下列命令: 代码: $sudo cp Desktop/linux-2.6.39.3.tar.bz2 /usr/src

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.sodocs.net/doc/3514011841.html,,讨论关于程序问题、疑问、注释、思路、特性等任何的问题 指导1:制作屏幕录像 源代码:tutorial01.c

Ubuntu下Android源码修改、编译及运行、launcher定制

环境 Linux 版本:Ubuntu 11.04 (可由10.10的版本进行升级)64位系统 GCC版本:gcc version 4.5.2 Java版本:java version "1.6.0_26" 下载android源码前注意: 1、保证Ubuntu系统中的容量在80G左右,以保证足够的空间来存放android源码以及编译后的相关文件。 2、保证Ubuntu系统进行Internet访问。 联网方法:采用拨号进行连接。相关操作步骤如下所示: 1、虚拟机→设置→硬件→网络适配器→网络连接→桥接 2、启动Ubuntu系统,打开终端(在普通用户下),输入相关命令如下: $ pppoeconf //打开后输入上网账号跟密码,确认保存 $ sudo pon dsl-provider //上网连接命令 经过这两个步骤后就可以进行上网了。 Android源码编译所依赖的tools 01.$ sudo apt-get update 02.$ sudo apt-get -y install git-core 03.$ sudo apt-get -y install gnupg 04.$ sudo apt-get -y install sun-java6-jdk flex 05.$ sudo apt-get -y install bison 06.$ sudo apt-get -y install gperf 07.$ sudo apt-get -y install libsdl-dev 08.$ sudo apt-get -y install libesd0-dev 09.$ sudo apt-get -y install libwxgtk2.6-dev 10.$ sudo apt-get -y install build-essential 11.$ sudo apt-get -y install zip 12.$ sudo apt-get -y install curl 13.$ sudo apt-get -y install libncurses5-dev 14.$ sudo apt-get -y install zlib1g-dev 15.$ sudo apt-get -y install valgrind 注意:(如果是32bit的系统的话,则要更改几个Android.mk文件) 01./external/clearsilver/cgi/Android.mk 02./external/clearsilver/java-jni/Android.mk 03./external/clearsilver/util/Android.mk 04./external/clearsilver/cs/Android.mk 用gedit打开,修改m64为m32即可 另外 将build/core/main.mk中的ifneq (64,$(findstring 64,$(build_arch)))修改为: ifneq (i686,$(findstring i686,$(build_arch)))

视频解码中用到的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.sodocs.net/doc/3514011841.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.sodocs.net/doc/3514011841.html,/white210/blog/item/c4d54ceecc6579252cf5346c.html ubuntu 7.10 安装vmtools后显示及鼠标问题的解决方法 https://www.sodocs.net/doc/3514011841.html,/viewtopic.php?t=93845 vmhgfs和vmxnet的修正 https://www.sodocs.net/doc/3514011841.html,/viewtopic.php?f=65&t=94997&start=0

如何安装Linux内核源代码

如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux 内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。 使用Git 由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。 你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本: $ git clone git://https://www.sodocs.net/doc/3514011841.html,/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 然后使用下面的命令将你的代码树与Linus的代码树最新状态同步: $ git pull 安装内核源代码 内核包有GNU zip(gzip)和bzip2格式。Bzip2是默认和首选格式,因为它的压缩比通常比gzip更好,bzip2格式的Linux内核包一般采用linux-x.y.z.tar.bz2形式的文件名,这里的x.y.z是内核源代码的具体版本号,下载到源代码包后,解压和抽取就很简单了,如果你下载的是bzip2包,运行: $ tar xvjf linux-x.y.z.tar.bz2 如果你下载的是gzip包,则运行: $ tar xvzf linux-x.y.z.tar.gz 无论执行上面哪一个命令,最后都会将源代码解压和抽取到linux-x.y.z目录下,如果你使用Git下载和管理内核源代码,你不需要下载tar包,只需要运行git clone命令,它就会自动下载和解压。 内核源代码通常都会安装到/usr/src/linux下,但在开发的时候最好不要使用这个源代码树,因为针对你的C库编译的内核版本通常也链接到这里的。 应用补丁

虚拟机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.sodocs.net/doc/3514011841.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.sodocs.net/doc/3514011841.html,/x264.git (3) x265[plain] view plain copy hg clone https://https://www.sodocs.net/doc/3514011841.html,/multicoreware/x265 (4) yasm yasm 是x86平台的一个汇编优化器, 能够加快ffmpeg x264的编译 [plain] view plain copy wget https://www.sodocs.net/doc/3514011841.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

在Ubuntu上编译android

在Ubuntu7.10上编译android 1 概述 上个星期看到android开放源代码的消息,虽然觉得Google的这个动作会对业界产生很大影响,但没有时间仔细看,只浏览了Project layout。今天上午一个网友在mail中说已经编译、运行过android。我趁着中午休息时间,在一个Ubuntu7.10的虚拟机上编译、运行了一下。 我在这个虚拟机上编译过openmoko、poky。相对于这两个使用OpenEmbedded的平台,android的编译要简单一些,快一些。我在编译openmoko和poky时,将所有下载包都保存在一个目录中,将编译目录的sources子目录指向这个目录。这样做,一方面即使以后有些链接失效,也还可以编起来(其实编译时都不需要连接外网);另一方面在重新编译时,不用重新下载,可以加快编译速度。即使这样,完全编译一次poky也要一个晚上。编译android时,下载用了1个小时,编译也只需要1个小时。 2 编译中的两个小问题 2.1 python和JDK Google网站对编译过程的介绍还是很清晰的。不过在介绍其它软件包时,都给出了apt-get命令,却单独给出了python和JDK的链接地址,容易对读者产生误导,以为要手工安装这两个软件。其实这两个软件也应该通过apt-get安装。特别是python,如果从源代码安装,可能因为依赖其它软件,导致一些组件编译失败,影响android的编译。而且python 2.6的源代码包没有提供make uninstall,卸载也比较麻烦。其实我们只需要一个apt-get命令,就可以安装所有依赖的软件。 2.2 "fatal: git 1.5.4 or later required" 在Ubuntu7.10上执行repo init时,会出现"fatal: git 1.5.4 or later required"的错误提示。在Ubuntu8.04上编译没有这个问题。下面的流程里会介绍怎样解决这个问题。 3 在Ubuntu7.10上的编译流程

在ubuntu 10.10(2.6.35.22) 编译安装linux-2.6.35.13内核

在ubuntu 10.10(2.6.35.22) 编译安装linux-2.6.35.13内核 第一步:准备工作 打开终端获得root权限:sudo su 然后安装编译内核时需要的工具: apt-get install build-essential kernel-package libncurses5-dev libqt3-headers build-essential (基本的编程库(gcc, make等) kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具) libncurses5-dev (make menuconfig要调用的) libqt3-headers (make xconfig要调用的) 其他工具在升级过程中可以按提示安装 第二步:到https://www.sodocs.net/doc/3514011841.html,下载内核源代码linux-2.6.35.13.tar.gz 假设下载在root目录(具体路径个人喜好),然后解压到/usr/src/linux-2.6.35.13目录里 tar zxvf /root/linux-2.6.35.13.tar.gz -C /usr/src 解压后会在/usr/src生成新文件夹linux-2.6.35.13 第三步:配置 把正在使用中的内核配置文件/usr/src/linux-headers-2.6.35-22-generic/.config 拷到/usr/src/linux-2.6.35.13目录下 cp /usr/src/linux-headers-2.6.35-22-generic/.config /usr/src/linux-2.6.35.13 执行: cd /usr/src/linux-2.6.35.13 make menuconfig 终端会弹出一个配置界面,注意主菜单最后有两项: Load an Alternate Configuration File Save an Alternate Configuration File 先选Load an Alternate Configuration File,意思是利用当前的内核配置详单来设置将要编译的内核,然后选Save an Alternate Configuration File,最后退出配置界面。 第四步:开如编译安装新内核 //执行:sudo make mrproper (清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行) //上面这个操作会把前面拷贝的.config干掉,所以。。。你懂的。。。 执行:sudo make(编译,可以加-j4,如果你CPU是双核心,够牛的话,因为可以提高速度) 然后:sudo make install(安装内核文件到/boot目录,安装过程会自动修改GRUB启动菜单) 再:sudo make modules(编译内核需要的模块) 再:sudo make modules_install(安装模块到/lib/modules目录) 最后创建initrd文件: mkinitramfs -o /boot/initrd.img-2.6.35.13

linphone语音版移植

Linphone在Linux X86下的编译 (一) Linphone依赖库准备: libogg-1.1.3.tar.gz(https://www.sodocs.net/doc/3514011841.html,/releases/ogg/libogg-1.1.3.tar.gz) speex-1.2beta3.tar.gz(依赖于libogg) libosip2-3.3.0.tar.gz(https://www.sodocs.net/doc/3514011841.html,/gnu/osip/libosip2-3.3.0.tar.gz) libeXosip2-3.3.0.tar.gz(https://www.sodocs.net/doc/3514011841.html,/Unix/NonGNU/exosip/libeXosip2-3.3.0.tar.gz) 依赖库打包下载地址:https://www.sodocs.net/doc/3514011841.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 音频解码器

Android_4.2_源码下载和编译环境安装及Android_4.2_源码编译

Android 4.2源码的下载和编译环境的安装及源码的编译Google于2012.11.14发布了Android4.2的源码,下面把本人在ubuntu10.04 的64位 系统上下载源码,和编译源码做个记录备份,也供有需要的人参考,若是在下载编译安装Android源代码遇到问题,可加QQ群交流: 217706590,难免有错,敬请见谅,还忘勿吝啬指出。 源代码下载、编译环境安装、源代码编译和运行模拟器的可能出现的一些错误在本文最后一章节,若出现类似错误,可以参考。 1、源码的下载 源代码的下载,首先需要安装以下软件:curl 和git-core 1.1安装curl: 在终端中执行:sudo apt-get install curl 1.2安装git-core 1.2.1在用户目录下新建bin文件 在终端中执行:mkdir ~/bin 将~/bin添加环境变量,作用是:要将git软件下载安装在此目录,在别的目录运行可能会找不到此软件,所以要添加到环境变量中 在终端中执行:PA TH=~/bin:$PATH 1.2.2安装git-core 在终端中执行:curl https://https://www.sodocs.net/doc/3514011841.html,/dl/googlesource/git-repo/repo§> ~/bin/repo 给repo执行权限:chmod a+x ~/bin/repo 1.3 下载源代码 1.3.1进入要源代码将要保存的目录 如我的源代码保存在:、/opt/android/src 在终端中执行:cd /opt/android/src 进入到src目录中 1.3.2 获取repo最新的配置 repo init -u https://https://www.sodocs.net/doc/3514011841.html,/platform/manifest§ 若是执行错误则用以下命令: ~/bin/repo init -u https://https://www.sodocs.net/doc/3514011841.html,/platform/manifest§ 1.3.3 下载源代码 对于下载不同版本的android,指定一个manifest分支(即只指明android对应的版

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 系统定位和意义 图像与视频监控系统是应用计算机与通讯技术实现对目标区域信息监控的系统,常用于交通,能源,公安,电信,军事等部门。随着计算机技术及网络技术的迅猛发展,视频监控系统的发展趋势必然是全面数字化、网络化,即采用嵌入式网络摄像机,利用网络进行传输,利用嵌入式监控设备体积小巧、性能稳定、

Ubuntu下编译安装FFmpeg

一个简单的ns2实验全过程 实验名称:比较tcp和udp的丢包行为 试验目的: 1. 熟练用ns2做网络仿真试验的整个流程; 2. 练习写tcl脚本,了解怎么应用http和rtp; 3. 练习用awk处理trace数据,了解怎么计算丢包率; 4. 练习用gnuplot绘制曲线图,熟练gnuplot的使用。 实验步骤: 1。确定网络拓扑。 一个简单的三个节点的拓扑,两个运行cbr(const-bitrate)应用的发送结点,一个接收结点。一条链路使用tcp链接,一条链路使用udp连接。如图。 2。写tcl脚本。 # jiqing 2007-6-5 # this script is to compare the loss rates of http and rtp. set ns [new Simulator] #open a nam trace file set nf [open out.nam w] $ns namtrace-all $nf #open a trace file set tf [open out.tr w] $ns trace-all $tf #finish procedure proc finish {} { global ns nf tf $ns flush-trace close $nf close $tf exec ./nam out.nam & exit 0

} #create nodes set node(http) [$ns node] set node(rtp) [$ns node] set node(recv) [$ns node] #create links $ns duplex-link $node(http) $node(recv) 0.9Mb 10ms DropTail $ns duplex-link $node(rtp) $node(recv) 0.9Mb 10ms DropTail #set queue size $ns queue-limit $node(http) $node(recv) 10 $ns queue-limit $node(rtp) $node(recv) 10 #relayout nodes $ns duplex-link-op $node(http) $node(recv) orient right-down $ns duplex-link-op $node(rtp) $node(recv) orient right-up #set colors $ns color 1 blue $ns color 2 red #set a tcp connection set tcp [new Agent/TCP] $ns attach-agent $node(http) $tcp set sink [new Agent/TCPSink] $ns attach-agent $node(recv) $sink $ns connect $tcp $sink $tcp set fid_ 1 #set a cbr above tcp connection set cbr(http) [new Application/Traffic/CBR] $cbr(http) attach-agent $tcp $cbr(http) set type_ CBR $cbr(http) set packet_size_ 1000 $cbr(http) set rate_ 1mb $cbr(http) set random_ false #set a rtp connection set rtp [new Agent/UDP] $ns attach-agent $node(rtp) $rtp set null [new Agent/Null] $ns attach-agent $node(recv) $null

相关主题