Sunday, March 30, 2008

實驗八 影像傳輸效能分析與評估

了解各種影響影像傳輸的因素,並了解各個因素之間的關連性。

使用ffmpeg程式將YUV檔轉成m4v檔

使用MP4Box將影片再轉成mp4檔案,不過又出現了錯誤訊息,缺少了msvcr70.dll,於是我就去把lab6的msvcr70.dll複製過來lab8的資料夾裡面,就可以解決了

成功轉成mp4

利用mp4trace程式將影片中每一個frame相關資訊擷取出來並存放到foreman_qcif.st檔案中

使用ns2進行模擬

使用模擬過程中的 sd 、rd 、foreman_qcif.st 、mp4檔案,經由etmp4程式產生一個有畫面遺失的影片mp4檔

再使用ffmpeg將重建之後的mp4檔回復成yuv影片檔

使用avgpsnr去針對重建後yuv影片檔及原始yuv影片檔,獲得重建後的yuv影片的平均PSNR為
26.609726(跟課本上的PSNR=26.64差了ㄧ點)

a.產生GOP length 9的方式

b.產生 GOP length 15的方式

實驗七 MyEalvid-NT

了解如何使用 MyEalvid-NT去評量多媒體網路的效能,並使用 MyEalvid-NT去驗證所得知可解畫面比例分析模型

首先下載video traffic trace file 打開檔案把前兩行的敘述移除,並使用ns2進行模擬

在進行評估分析之前,必須先轉換trace file的格式,使用下列的敘述去進行轉換,所獲得的Verbose_StarWarsIV.st即是相關的影片記錄檔

使用et程式去進行評估分析的動作

經由下面的操作得知封包平均的延遲時間和最大延遲

使用awk繪圖

封包平均的延遲時間和最大延遲

使用awk繪圖畫面平均的延遲時間和最大延遲

畫面平均的延遲時間和最大延遲

使用awk繪圖封包抖動率

使用awk繪圖畫面抖動率

Thursday, March 27, 2008

實驗六 MyEvalVid

了解如何使用MyEvalVid來模擬和評估多媒體影像傳輸

模擬網路架構圖
將目錄切換到lab6資料夾底下,使用ffmpeg程式對YUV檔轉成m4v檔案

轉成m4v檔案後,接著使用MPBox將影片轉成mp4檔案,此時出現錯誤訊息,發現少了ㄧ個msvcr70.dll,上網 google一下找到可以下載msvcr70.dll

把下載好的msvcr70.dll 放到 lab6 的資料夾就可以將影片轉成mp4檔案

把影片轉成mp4之後,利用mp4trace程式將影片中的每一個frame相關資訊擷取出來並存放到foreman_qcif.st的檔案中

這是foreman_qcif.st的檔案

使用ns2模擬工具去模擬網路效能,採用random uniform error model & multicast傳送,並把錯誤率設為0.01,seed為1,最大的封包大小為1024bytes

傳送端送出了659個封包

接收端只收到了651個封包,遺失率為(659-651)/659 = 0.012

使用sd檔、rd檔及foreman_qcif.st和mp4檔,經由etmp4產生一個有畫面遺失的影片mp4,但是當我打入指令的時候一直會有需要偵錯出現,不信邪又試了很多遍還是ㄧ樣,於是停滯不前了ㄧ個禮拜。禮拜四上課的時候突然靈機ㄧ動,想說如果把課本的指令./拿掉試看看沒想到就成功了

在使用ffmpeg程式將重建後的mp4回覆成yuv檔

使用avgpsnr 程式去針對重建後的yuv影片檔及原始yuv影片檔,獲得重建之後yuv影片的PSNR值為33.294933

使用YUV viewwe程式去觀賞重建後的影片與原始影片的差別,左半部影像為原始影像檔,右半部影像為重建影像


終於成功完成了,中間有ㄧ度卡很久沒辦法成功,不過影片中的人的臉有點冏。

Sunday, March 23, 2008

實驗五 無線網路封包傳輸遺失模型

介紹無線網路封包傳輸遺失模型,了解Multicast & Unicast 的傳輸模式對於封包傳輸遺失機率的影響。

情境一

使用隨機統一模型(PG=0.1,loss_model=0) 和 Multicast傳送(comm_type=0)

產生傳送紀錄檔(sd)共有12351個封包被送出

接收記錄檔(rd)共有11124封包被接收 遺失率:(12351-11124)/12351 = 0.999


情境二
使用隨機統一模型(PG=0.4,loss_model=0) 和 Multicast傳送(comm_type=1)

產生傳送紀錄檔(sd)共有12351個封包被送出

接收記錄檔(rd)共有11124封包被接收 遺失率:(12351-12061)/12351 = 0.0234


情境三
使用隨機統一模型(PGG=0.96,PBB=0.94,PG=0.001,PB=0.05,loss_model=1) 和 Multicast傳送(comm_type=0)

產生傳送紀錄檔(sd)共有12351個封包被送出

接收記錄檔(rd)共有11124封包被接收 遺失率:(12351-12118)/12351 = 0.0188

Friday, March 14, 2008

實驗四 網路效能測量

學習如何測量以UDP為傳輸協定的應用程式之throughput、packet delay、packet jitter和packet loss rate,並且學習如何量測以TCP為傳輸協定的應用程式之throughput。

由於目前我們還無法獨自撰寫TCL檔,於是便使用課本上所附之範例來進行模擬。

example 1 有線網路

首先切換到TCL檔所儲存的目錄底下,輸入「ns wired-measure.tcl」來執行

模擬結束之後會產生tcp_sink、sd_udp和rd_udp三個記錄檔

從sd_udp檔案中,可得知有550筆記錄

從rd_udp檔案中,可得知有542筆記錄,所以總共有8個封包遺失,遺失率為8/550=1.45%

使用「$awk '{print $1, $4 }' rd_udp > cbr_delay」把rd_udp第ㄧ欄(封包序號)和第四欄(封包延遲時間),列印到cbr_delay中

使用gnuplot畫出cbr_delay,輸入「plot "cbr_delay" title 'cbr: packet delay' with linespoints 1」

畫出來的圖

設定X軸跟Y軸,並且存成gif的圖檔

cbr_delay的圖

使用awk分析程式來求得抖動率「$awk -f measure-jitter.awk rd_udp > cbr_jitter」

使用gnuplot畫出cbr_jitter,輸入「plot "cbr_jitter" title 'cbr: packet jitter' with linespoints 1」

畫出來的圖

設定X軸跟Y軸,並且存成gif的圖檔

使用Perl分析UDP throughput(measure-throughput.pl)

使用「perl measure-throughput.pl rd_udp 0.5」每0.5秒去統計這段時間的平均吞吐量,執行結果中的第ㄧ欄是時間,第二欄是這段時間內的平均吞吐量,最後是平均吞吐量(Average rate)和最高吞吐量(Peak rate)

使用Perl分析TCP throughput(measure-TCP.pl)

使用「perl measure-TCP.pl tcp_sink 0.5」去執行


example 2 無線網路
首先切換到TCL檔所儲存的目錄底下,輸入「ns wireless-measure.tcl」來執行,模擬結束之後會產生sd_udp和rd_udp兩個記錄檔

從sd_udp檔案中,可得知有453筆記錄

從rd_udp檔案中,可得知有205筆記錄,所以總共有248個封包遺失,遺失率為248/453=54.74%

使用「$awk '{print $1, $4 }' rd_udp > cbr_delay」把rd_udp第ㄧ欄(封包序號)和第四欄(封包延遲時間),列印到cbr_delay中

使用gnuplot畫出cbr_delay,輸入「plot "cbr_delay" title 'cbr: packet delay' with linespoints 1」,設定X軸跟Y軸,並且存成gif的圖檔

使用awk分析程式來求得抖動率「$awk -f measure-jitter.awk rd_udp > cbr_jitter」,並使用gnuplot畫出cbr_jitter,輸入「plot "cbr_jitter" title 'cbr: packet jitter' with linespoints 1」,設定X軸跟Y軸,並且存成gif的圖檔

使用Perl計算 throughput(measure-throughput.pl rd_udp 1)


目前只是按照課本的步驟來模擬,要達到會自己寫TCL來模擬和使用awk或是perl來計算,還有一段很大的差距。