Ubuntu下编译安装FFmpeg
open4 ffmpeg 交叉编译

open4 ffmpeg 交叉编译我们需要准备好交叉编译的环境。
在本文中,我们以Ubuntu操作系统为例。
```sudo apt-get install gcc-arm-linux-gnueabi```安装完成后,我们可以使用以下命令检查是否安装成功:```arm-linux-gnueabi-gcc --version```接下来,我们需要下载open4和ffmpeg的源代码。
可以从官方网站上下载最新版本的源代码包,也可以使用Git进行下载。
下载完成后,我们可以将源代码包解压到指定的文件夹中。
在进行交叉编译之前,我们还需要为交叉编译器设置环境变量。
可以使用以下命令:```export CC=arm-linux-gnueabi-gccexport CXX=arm-linux-gnueabi-g++```接下来,我们可以开始进行open4的交叉编译。
进入open4源代码文件夹,并执行以下命令:```./configure --host=arm-linuxmake```编译完成后,我们可以得到编译好的open4库文件。
在交叉编译过程中,可能会遇到一些依赖问题。
如果出现依赖问题,我们需要在交叉编译环境中安装相应的依赖库。
接下来,我们可以开始进行ffmpeg的交叉编译。
进入ffmpeg源代码文件夹,并执行以下命令:```./configure --cross-prefix=arm-linux-gnueabi- --arch=arm --target-os=linux --prefix=安装路径makemake install```在上述命令中,我们使用了cross-prefix参数指定了交叉编译器的前缀,arch参数指定了目标平台的架构,target-os参数指定了目标平台的操作系统,prefix参数指定了安装路径。
编译完成后,我们可以得到编译好的ffmpeg可执行文件和库文件。
在交叉编译过程中,可能会遇到一些依赖问题。
ubuntu安装caffepythonopencvmatlab20170829

Ubuntu安装caffe及python和opencv Ubuntu版本:LTS,能够比较顺利地全数安装python所需的各类依托,而不需要安装anaconda包。
不然会引发新的软件之间的冲突。
Opencv::Cuda:Cudnn:1.Caffe安装官网:解决无法安装ubuntu操作系统的问题最近楼主购入一台华硕游戏本,发觉无法安装ubantu。
在安装中发觉除debian外所有利用自动安装方式的linux发行版均不能安装,于是研究就开始了。
opensuse卡在写入引导,fedroa和centos卡在启动,ubuntu卡在启动安装,疑心是u盘制作工具有问题,于是尝试了几种工具,就连dd命令也试过了,结果都无法解决。
解决方式:从头开机,光标选中“Install Ubuntu”,按“e”,进入grub界面,将倒数第二行中的“quiet splash ---”改成“nomodeset”。
F10保留,就能够够进入安装界面,进行安装。
安装ubuntu系统以后,还需要将Ubuntu集成的开源驱动加入黑名单,即增加/etc/文件:sudo gedit /etc/在该文件中增加如下两行:blacklist nouveauoptions nouveau modeset=0激活上述文件发挥功能,执行sudo update-initramfs –u执行$lspci | grep nouveau,查看是不是有内容,没有说明禁用成功,若是有内容,就执行:$sudo reboot2.安装caffe及python先下载caffe# sudo git clone BVLC/然后安装一堆第三方库# sudo apt-get install libatlas-base-dev# sudo apt-get install libprotobuf-dev# sudo apt-get install libleveldb-dev# sudo apt-get install libsnappy-dev# sudo apt-get install libopencv-dev# sudo apt-get install libboost-all-dev# sudo apt-get install libhdf5-serial-dev# sudo apt-get install libgflags-dev# sudo apt-get install libgoogle-glog-dev# sudo apt-get install liblmdb-dev# sudo apt-get install protobuf-compiler# sudo apt-get install python-dev接着,安装opencv# cd caffe# sudo git clone jayrambhia/Install-OpenCV# cd Install-OpenCV/Ubuntu# sudo sh# cd# sudo shopencv的另一种安装方式直接克隆下来sudo git clone jayrambhia/Install-OpenCV进入cd Install-OpenCV/Ubuntu/给所有shell脚本加上可执行权限chmod +x *.sh安装其他版本犯错了,建议装那个:sudo ./或:sudo sh最终显现OpenCV ready to be used(表示成功)接下来,编译caffe# cd ~/caffe# sudo cp# make all至此,caffe安装完成。
Ubuntu安装FFmpeg

Ubuntu安装FFmpeg概述(来⾃百度百科)FFmpeg是⼀套可以⽤来记录、转换数字⾳频、视频,并能将其转化为流的开源计算机程序。
采⽤LGPL或GPL许可证。
它提供了录制、转换以及流化⾳视频的完整解决⽅案。
它包含了⾮常先进的⾳频/视频编解码库libavcodec,为了保证⾼可移植性和编解码质量,libavcodec⾥很多code都是从头开发的。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运⾏,包括Windows、Mac OS X等。
这个项⽬最早由Fabrice Bellard发起,2004年⾄2015年间由Michael Niedermayer主要负责维护。
许多FFmpeg的开发⼈员都来⾃MPlayer项⽬,⽽且当前FFmpeg也是放在MPlayer项⽬组的服务器上。
项⽬的名称来⾃MPEG视频编码标准,前⾯的"FF"代表"Fast Forward"。
库的安装sudo apt-get install -y autoconf automake build-essential git libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev apt install libavformat-devapt install libavcodec-devapt install libswresample-devapt install libswscale-devapt install libavutil-devapt install libsdl1.2-devlibavformat:⽤于各种⾳视频封装格式的⽣成和解析,包括获取解码所需信息以⽣成解码上下⽂结构和读取⾳视频帧等功能;libavcodec:⽤于各种类型声⾳/图像编解码;libavutil:包含⼀些公共的⼯具函数;libswscale:⽤于视频场景⽐例缩放、⾊彩映射转换;libpostproc:⽤于后期效果处理;ffmpeg:该项⽬提供的⼀个⼯具,可⽤于格式转换、解码或电视卡即时编码等;ffsever:⼀个 HTTP 多媒体即时⼴播串流服务器;ffplay:是⼀个简单的播放器,使⽤ffmpeg 库解析和解码,通过SDL显⽰;安装下载源码包:git clone git:///ffmpeg.git ffmpeg源码编译安装:./configure --enable-shared --prefix=/usr/local/ffmpeg --enable-gpl --enable-libx264 --extra-cflags=-I/usr/local/ffmpeg/include --extra-ldflags=-L/usr/local/ffmpeg/libmakemake install在安装过程中出现两个问题,解决如下:问题1:提⽰yasm未安装错误,处理这个问题很简单,直接安装yasm即可,具体⽅法是在命令⾏终端执⾏sudo apt-get install yasm。
ffmpeg安装教程

ffmpeg安装教程1、先装mp3在linux下的包:lame-3.97.tar.gz;tar -xvzf lame-3.97.tar.gz;cd lame-3.97;//(默认是装在/usr/local下);//--prefix=/usr/此参数一定要(便于调用os的其它系统包)//--enable-shared此参数一定要./configure --enable-shared --prefix=/usr/;make;make install;2.下载amr-wb包,解压,编译,安装:tar jxvf amrwb-7.0.0.1.tar.bz2cd amrwb-7.0.0.1./configure --prefix=/usr/localmakesudo make install3.下载amr-nb包,解压,编译,安装:tar jxvf amrnb-6.1.0.4.tar.bz2cd amrnb-6.1.0.4./configure --prefix=/usr/localmakesudo make install4.mpg4 aac格式支持,由于服务器还针对手机用户服务,所以,类似aac,mpg4铃声格式的支持,我们也得做。
这里我们安装faad2和faac就行tar zxvf faad2-2.5.tar.gzcd faad2echo > plugins/Makefile.amecho > plugins/xmms/src/Makefile.amsed -i '/E_B/d' configure.inautoreconf -vif./configure --prefix=/usrmakemake installtar zxvf faac-1.25.tar.gzcd faacsed -i '/[2de].M/d' configure.inecho "AC_OUTPUT(common/Makefile common/mp4v2/Makefile libfaac/Makefile frontend/Makefile include/Makefile Makefile)" >> configure.inautoreconf -vif./configure --prefix=/usrmakemake install5.安装ffmpeg:tar jxvf ffmpeg.tar.gzcp amr_float.zip ffmpeg-0.5/libavcodec/cp amrwb_float.zip ffmpeg-0.5/libavcodeccd ffmpeg-0.5/libavcodec/unzip amrwb_float.zipunzip amr_float.zipcd .../configure --prefix=/usr/local/ffmpeg/ --enable-libmp3lame --enable-libamr_nb--enable-libamr_wb --enable-nonfree --enable-libfaad --enable-libfaac --enable-gpl--enable-pthreads;如果编译出现mv: cannot create regular file `config.h': Permission denied在configure 文件中如下行中出了问题:************************************cmp -s $TMPH config.h &&echo "config.h is unchanged" ||mv -f $TMPH config.h*************************************解决问题:mv -f $TMPH config.h改成cp -f $TMPH config.h,立马见效。
opencv ffmpeg 交叉编译

opencv ffmpeg 交叉编译OpenCV和FFmpeg是两个常用的图像处理和视频处理的库。
它们可以帮助我们实现各种各样的应用。
本文将介绍如何对它们进行交叉编译。
首先,需要准备好交叉编译工具链。
这里我们以arm-linux-gnueabi为例。
在Ubuntu下,可以使用以下命令进行安装:```sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi```接下来,我们需要下载OpenCV和FFmpeg的源码。
可以从它们的官方网站上下载最新的版本。
下载完成后,将它们解压缩到任意目录下。
然后,进入OpenCV的源码目录,创建一个名为"build"的子目录,并进入该目录。
执行以下命令:```cmake \-DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake \-DCMAKE_INSTALL_PREFIX=install \-DCMAKE_C_FLAGS="-march=armv7-a -mfpu=neon -mfloat-abi=hard" \-DCMAKE_CXX_FLAGS="-march=armv7-a -mfpu=neon -mfloat-abi=hard" \-DWITH_CUDA=OFF \-DBUILD_DOCS=OFF \-DBUILD_TESTS=OFF \-DBUILD_PERF_TESTS=OFF \-DBUILD_EXAMPLES=OFF \-DBUILD_ANDROID_EXAMPLES=OFF \-DWITH_FFMPEG=OFF \-DWITH_GSTREAMER=OFF \-DWITH_TBB=OFF \-DWITH_EIGEN=OFF \-DWITH_QT=OFF \-DWITH_VTK=OFF \-DWITH_IPP=OFF \-DWITH_OPENCL=OFF \-DWITH_OPENCL_SVM=OFF \../```该命令会使用指定的工具链进行编译,并将结果安装到"install"目录下。
UbuntuLinux下Ffmpeg及Mencoder安装使用小结

UbuntuLinux下Ffmpeg及Mencoder安装使用小结近段时间在学习Ffmpeg、Mencoder音视频转换,大概在Ubuntu 10.04、Ubuntu 10.10、Ubuntu Natty 测试版上安装和使用过。
重点是针对低分辨率的普通手机视频,测试的手机为Bird V780,主要参数为,视频编码:mpeg4、h263,音频编码:faac、amrnb,容器格式:mp4、3gp,分辨率:176×144;音乐文件格式:mp3 。
下面对 Ubuntu Linux 下 Ffmpeg 及 Mencoder 安装使用作个小结。
1、安装:安装Ubuntu 软件仓库里的版本是很容易的,用sudo apt-get install 命令就可以自动安装上。
但是官方仓库里面的版本比较陈旧,可能缺失一些功能和存在一些bug 没有解决,更重要的是,一些需要的编码支持没有被官方版本编译进去,如用于普通手机视频的faac、amr 音频编码支持等。
而且,两个软件官方网站均推荐使用其svn 或git 开发版本。
所以,下面着重总结编译安装 ffmpeg 和 mencoder。
为了避免可能的冲突,在开始之前,我卸载了仓库版本的相关软件:sudo apt-get remove ffmpeg mencoder mplayer获取Ffmpeg 开发版本:git clone git:///ffmpeg.git ffmpeg获取Mplayer 开发版本(包含了mencoder):svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer实际上 ./configure 配置 Mplayer 时会自动从 Ffmpeg 的开发库中下载 ffmpeg 最新开发版源码供编译 Mplayer 使用,因为 Mplayer 和 Mencoder 会调用 Ffmpeg 的库。
而且,在当前的 Mplayer 编译中,如果没有特别设定,Mplayer 会把 Ffmpeg 的库编译成静态库编入Mplayer 或Mencoder 的二进制文件中,使这两个文件达到约14M左右。
ffmpeg命令使用
ffmpeg命令使用FFmpeg是一款强大的开源多媒体框架,被广泛用于音视频处理和转码。
它支持众多音视频格式,具备丰富的功能和灵活的编解码能力。
下面将一步一步地介绍FFmpeg的命令使用,帮助用户更好地了解和使用这个工具。
第一步:安装FFmpeg首先,在命令行或终端中输入以下命令来安装FFmpeg:sudo apt-get install ffmpeg如果你使用的是Windows系统,可以从FFmpeg官网()上下载预编译好的二进制文件,并将其添加到系统的环境变量中。
第二步:基本命令的使用在命令行或终端中,你可以输入以下命令:ffmpeg -i input_file output_file其中,input_file是待处理的音视频文件的路径,output_file是处理后的音视频文件的路径。
通过这个命令,你可以实现简单的音视频转码功能。
第三步:音视频转码FFmpeg能够处理各种音视频格式之间的相互转换。
例如,将MP4格式的视频转换为AVI格式,可以使用以下命令:ffmpeg -i input.mp4 -f avi output.avi其中,-i参数指定了输入文件,-f参数指定了输出格式。
你可以根据实际情况替换输入和输出文件的路径,以及指定不同的输出格式。
第四步:剪切和拼接视频你可以使用FFmpeg来剪切和拼接视频。
比如,将视频的前5秒剪切下来:ffmpeg -ss 00:00:00 -i input.mp4 -t 00:00:05 -c copy output.mp4这里,-ss参数指定了剪切的起始时间,-t参数指定了剪切的持续时间,-c copy参数表示直接复制原始编码格式。
如果你想将多个视频文件拼接在一起,可以使用以下命令:ffmpeg -i "concat:input1.mp4 input2.mp4" -c copy output.mp4这里,concat参数用于指定要拼接的文件名列表,每个文件由分隔,-c copy参数表示直接复制原始编码格式。
ubuntu18.04server服务器系统下为python安装虚拟显示器(使用jupyt。。。
ubuntu18.04server服务器系统下为python安装虚拟显⽰器(使⽤jupyt。
1. 安装xvfbsudo apt-get install xvfbXvfb是流⾏的虚拟现实库,可以使很多需要图形界⾯的程序虚拟运⾏。
2. 安装pyvirtualdisplaypyvirtualdisplay 是Xvfb的 python 封装。
pip install pyvirtualdisplay3. 在 Ubuntu 上安装 OpenGL Librarysudo apt-get install libgl1-mesa-dev4. 安装 python-openglsudo apt-get install python-opengl注:如果不安装 python-opengl 运⾏图形显⽰的应⽤时报错:测试代码:from pyvirtualdisplay import Displayimport gymdisplay = Display(visible=0, size=(1024, 768))display.start()env_id = "CartPole-v0"env = gym.make(env_id)env.reset()env.render()display.stop()如果只是为了在服务器上把具有图像显⽰功能的程序跑起来的话那么上⾯的内容就可以了,但是⼀般需要使⽤在服务器上运⾏图像显⽰功能的应⽤⼀般都是运⾏爬⾍和运维等需求,但是在机器学习中则是主要在使⽤open_ai下的gym来运⾏可以显⽰图像的应⽤,下⾯部分介绍使⽤jupyter notebook在web端播放openai的gym下保存的运⾏视频。
(注意:本⽂中所介绍的所有功能和⽅法都不⽀持与服务器虚拟显⽰下图像界⾯进⾏交互的功能)=====================================================使⽤jupyter查看openai的gym下保存的运⾏视频:1. 安装视频编解码⼯具 ffmpegsudo apt install ffmpeg经过验证在Ubuntu18.04系统中使⽤系统安装ffmpeg容易报错,如下:Unknown encoder 'libx264'的解决⽅法于是,使⽤conda 安装 ffmpeg :conda install ffmpegconda uninstall ffmpeg测试代码:from pyvirtualdisplay import Displayimport gymdisplay = Display(visible=0, size=(1024, 768))display.start()env_id = "CartPole-v0"env = gym.make(env_id)env = gym.wrappers.Monitor(env, "videos", force=True)env.reset()while True:env.render()state, reward, end_flag, info = env.step(env.action_space.sample()) print(state, reward, end_flag, info)if end_flag == True:breakdisplay.stop()成功运⾏,可以查看到保存的视频⽂件:2. 安装 ipythonpip install ipython测试代码:import base64import globimport ioimport osfrom IPython.display import HTML, displaydef ipython_show_video(path: str) -> None:"""Show a video at `path` within IPython Notebook."""if not os.path.isfile(path):raise NameError("Cannot access: {}".format(path))video = io.open(path, "r+b").read()encoded = base64.b64encode(video)display(HTML(data="""<video alt="test" controls><source src="data:video/mp4;base64,{0}" type="video/mp4"/></video>""".format(encoded.decode("ascii"))))list_of_files = glob.glob("videos/*.mp4")latest_file = max(list_of_files, key=os.path.getctime)print(latest_file)ipython_show_video(latest_file)备注:需要在测试⽂件所在⽂件夹下⾯建⽴ videos ⽂件夹,并且在videos⽂件夹下⾯需要有 mp4⽂件。
ffmpeg的编译
ffmpeg的编译全文共四篇示例,供读者参考第一篇示例:FFmpeg是一个开源的跨平台音视频处理工具,它可以进行解码、编码、转码、流媒体处理等多种操作。
FFmpeg支持众多音视频格式,功能强大,使用广泛。
在实际应用中,可能会遇到需要对FFmpeg进行定制编译的情况,以满足自己的需求。
本文将介绍如何编译FFmpeg,并提供一些常见问题的解决方案。
第一步,准备开发环境在编译FFmpeg之前,首先需要准备好开发环境。
FFmpeg的编译过程需要依赖一些开发工具和库文件,这些工具和库文件可以通过包管理工具进行安装。
在不同的操作系统上,具体的安装方法可能有所不同。
在Ubuntu上,可以通过以下命令安装所需的开发工具和库文件:```bashsudo apt-get updatesudo apt-get install build-essentialsudo apt-get install git yasm libx264-dev libx265-dev```第二步,下载FFmpeg源代码接下来,我们需要下载FFmpeg的源代码。
FFmpeg的源代码托管在Git仓库中,可以通过Git工具进行下载。
在命令行中执行以下命令即可下载FFmpeg的源代码:```bashgit clone https:///ffmpeg.git``````bashcd ffmpeg```第三步,配置编译选项在编译FFmpeg之前,需要对其进行配置,配置编译选项。
FFmpeg的配置支持很多参数,可以根据需要进行定制。
通常情况下,我们可以使用以下命令进行配置:--prefix参数指定FFmpeg安装的路径,--enable-gpl参数表示开启GPL许可证的功能,--enable-libx264和--enable-libx265参数表示开启x264和x265编码器的支持。
在配置时,还可以根据实际需要添加其他参数,比如开启其他编码器的支持、开启特定格式的支持等。
ffmpeg-编译
一、安装编译所需的工具和库:
(1)先可以执行命令:
sudo apt-get purge ffmpeg x264 libx264-dev
清除原来的安装包
(2)然后执行命令:
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libMP3lame-dev libsdl1.2-dev libtheora-dev libx11-dev libxvidcore4-dev zlib1g-dev
ftp:///pub/videolan/x264/snapshots/
安装方法如下:Java代码
bunzip2 x264-snapshot-20070913-2245.tar.bz2
tar xvf x264-snapshot-20070913-2245.tar
当启动成功后,就不用管了,我们另开启一个终端测试,是否配置成功
输入:
ffplay http://localhost:8090/Blue
或
ffplay http://localhost:8090/testflv
如果能正常播放的话,那说明已经配置成功了
现在我们要做的是通过ffmpeg来将,数据字入缓冲区feed1.ffm中
File "Blur.MP3"
Format flv
</Stream>
表示创建一个以当前文件所在目录下的Blur.MP3创建的流,Blue,并将他以flv格式播放
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个简单的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 fileset nf [open out.nam w]$ns namtrace-all $nf#open a trace fileset tf [open out.tr w]$ns trace-all $tf#finish procedureproc finish {} {global ns nf tf$ns flush-traceclose $nfclose $tfexec ./nam out.nam &exit 0}#create nodesset 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 connectionset tcp [new Agent/TCP]$ns attach-agent $node(http) $tcpset sink [new Agent/TCPSink]$ns attach-agent $node(recv) $sink$ns connect $tcp $sink$tcp set fid_ 1#set a cbr above tcp connectionset 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 connectionset rtp [new Agent/UDP]$ns attach-agent $node(rtp) $rtpset null [new Agent/Null]$ns attach-agent $node(recv) $null$ns connect $rtp $null$rtp set fid_ 2#set a cbr above tcp connectionset 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 run3。
仿真。
在命令提示符下输入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;elsetcp_loss[i] = 0;if(total_udp > 0)udp_loss[i] = udp_droped / total_udp * 100;elseudp_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.000.91 6.45 0.000.92 6.38 0.000.92 6.38 0.000.92 6.38 0.000.93 6.32 0.960.93 6.32 0.960.93 6.32 0.950.94 6.25 0.950.94 6.25 0.940.94 6.25 0.940.95 6.19 0.940.95 6.19 0.930.95 6.19 0.930.95 6.12 0.930.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有重传机制,但在带宽太低的情况下,仍然会丢包。