2008年6月14日 星期六

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

實驗目的:了解各種影響影像傳輸的因素

實驗步驟與實驗七差不多

STEP1
使用ffmpeg對yuv檔案做轉換成為m4v檔案,此實驗中使用不同量化程度的視訊串流做比較,參數為qscale,量化階級:2~31
STEP2
接著再用MP4Box將m4v檔案轉成mp4檔案,需注意的是,若之後要使用不同封包大小傳送串流,下面的MP4Box的mtu選項須與之後的NS2模擬環境所使用的封包大小ㄧ致。

STEP3
利用mp4trace將影片中每一個frame相關資訊取出存在foreman_qcif.st檔案中
STEP4
接下來就可以使用ns2模擬工具開始模擬網路效能啦

STEP5
NS2模擬完後產生傳送紀錄檔sd,接收端記錄檔rd,及影片記錄檔foreman_qcif.st and mp4 file,經由etmp4 產生一個有畫面遺失的mp4檔案:
$ ./etmp4.exe sd rd foreman_qcif.st foreman_qcif.mp4 foreman_qcife

STEP6
use ffmpeg.exe to 回復上ㄧ步重建的mp4檔案成yuv檔案

STEP7
使用 avgpsnr.exe獲得重建後的yuv之PSNR value =26.609
影響影像傳輸因素探討


a. 產生GOP length 9的方式:

b.產生GOP length 15 的方式


2008年6月13日 星期五

實驗七 MyEalvid-NT

實驗目的:
了解如何使用MyEvalVid-NT去評量多媒體網路的效能,然後使用MyEvalVid-NT驗證所得知可解畫面比例分析模型。
背景:
為了測是我們提出的網路架構對於多媒體傳輸的效能影響,我們會使用影片做測試,然而因為影片版權問題所以便產生了video traffic trace file 供人下載測試,而為了讓MyEvalVid能夠使用video traffic trace file 去做網路模擬動作,因此便修改MyEvalVid使之成為一個新的工具組MyEvalVid-NT。
修改了什麼呢? 兩者之間的差異在於將MyEvalVid-NT中的Evaulate Trace(ET)做了修改,使其能計算可解畫面比例(Decodable Frame Rate)、封包/畫面遺失率、封包/畫面的端點與端點延遲、封包/畫面的抖動率。
在MPEG編碼中,被編碼的視訊串流被分類為:
Intra-coded frame: 由自己本身畫面做編碼。
Predictive-coded frame:參考先前被編碼的I-frame or P-frame 及自己本身做編碼
Bi-directionally Predictive-code frame:參考先前及後來的I-frame or P-frame 及本身自己的資料做編碼
在一個GOP的I-frame裡,所有屬於這個I-frame的封包都正確被接收到則稱此I-frame可解碼的。同理類推P and B -frame。


為了得到可解畫面比例分析模型,我們要先求得影像檔案中的三個frame可解碼的期望數目



定義: 可解畫面比例 = 所有可解碼的畫面數除以一個影像的所有畫面數


所以囉~可解畫面比例的值越大代表影像品質越好囉!



實驗步驟:
STEP1
這裡下載video traffic trace file,抓完後打開檔案移除前兩行
存檔放入資料夾lab7裡頭
STEP2
使用NS2進行模擬

模擬結束後,會得到傳送端傳送封包的紀錄檔sd及接收端收到的封包記錄檔rd

STEP3
再進行評估分析前,須先轉換trace file的格式

轉換完會得到Verbose_StarWarsIV.st影片記錄檔

STEP4

使用et這個程式進行記錄檔sd、rd、Verbose_StarWarsIV.st做比較,就可得知在此種情晃下可解畫面數及可解畫面比例的大小為多少

可知,這次網路模擬傳輸中共送出163682 packets,其中 I-frame:28770 p-frame:45339 B-frame:89573

總共遺失:1595 其中I-frame:281 p-frame:433 B-frame:881

可解畫面比例為0.913543
total directly decodable frame 代表的意義為這個畫面所分割出來的封包全部被接收端所接收到的數目

STEP5
經由下面操作可得平均延遲時間及最大延遲時間

STEP6

先把資料收集起來 $awk'{print $1, $2}' delay_pkt.txt > delay_pkt
開始繪圖


畫面平均延遲時間及最大延遲時間
$awk'{print $1, $2}' delay_1.txt > delay_1
STEP7
封包與畫面抖動率
封包抖動率:
$awk'{print $1, $3}' delay_pkt.txt > jitter_pkt


畫面抖動率:
$awk'{print $1, $3}' delay_1.txt > delay_frame



2008年6月11日 星期三

php 寫入檔案問題

使用
$handle = fopen("c:/phpsid.txt" , "w+") ;
fwrite($handle , $contents) ;
fclose($handle) ;


出現
Warning: fopen(c:/phpsid.txt) [function.fopen]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\php_pratice_gmapuser\setarea_1.0\setarea.php on line 452
Warning: fwrite(): supplied argument is not a valid stream resource in C:\Inetpub\wwwroot\php_pratice_gmapuser\setarea_1.0\setarea.php on line 453
Warning: fclose(): supplied argument is not a valid stream resource in C:\Inetpub\wwwroot\php_pratice_gmapuser\setarea_1.0\setarea.php on line 454


怪哉~
IIS 主目錄 下: 讀取 、 寫入 指令碼來源存取 都以勾選
使用權限也選擇 指令碼及執行檔

一直無法寫入,不知道哪裡有問題 悶~~
程式碼換成
$handle = fopen("c:/phpsid.txt" , "r") ;
$contents = fread($handle , filesize("phpsid.txt")) ;
fclose($handle) ;

讀取,是可行的~~~

2008年6月5日 星期四

實驗六: MyEvalVid

實驗目的:


Video Server 傳送影像至 Video Receiver,中間經過Internet 、無線網路,我們討論無線連接造成的封包遺失。

我們針對影像使用MyEvalvid 做Peak to Signal Nosie Ratio 評估,PSNR(峰值訊號雜訊比程式)是一種較為被大眾接受的影像品質鑑定客觀指標。 步驟如下


STEP1


我們使用ffmpeg.exe 把工人(foreman)的YUV檔案轉成m4V檔案


-s => set frame size , qcif means 176*144


-vcodec = >指定壓縮方式,如mpeg4


-r =>set frame rate ,這裡設定每秒30個畫面


-g => set the group of picture size,設定每一group有9個畫面


-bf = >use 'frames' B frames, 設定I與P之間or P與P之間有兩個frame


-i = >input file name,輸入來源影片 foreman_qcif.yuv





STEP2




用MP4Box把 .m4v 再轉成 .mp4


STEP3

用mp4trace.exe 將每一個frame的資訊擷取出來存到forman_qcif.st中

其中 192.168.0.2 is destination ip ,destination port number is 12346

(這邊設定不重要,因為沒有真的傳上網)

現在在lab6裡頭有這四檔案
foreman_qcif.st 裡面有400筆資料
between H and P or P and P have 2 B frame (與壓縮時的參數相關)

STEP4

開始用NS2模擬工具模擬網路效能 (lab6_1.tcl)

參數為 :

opt(0) = good->good 的機率
opt(1) = bad->bad 的機率
opt(2) = 在 good state下,封包發生錯誤的機率
opt(3) = 在 bad state下,封包發生錯誤的機率
opt(4) = seed number
opt(5) = 把每一畫面切成多少size大小的封包

傳送端送出659個封包,但接收端只收到652個封包
遺失率為0.0106
STEP5
使用模擬過程產生的TX記錄檔sd、RX記錄檔rd 與影片記錄檔foreman_qcif.st 和 mp4檔案
經由tmp4產生一個畫面有遺失的影片foreman_qcife.mp4

STEP6

再次使用ffmpeg將重建的foreman_qcife.mp4 轉回foreman_qcife.yuv

STEP7

使用avgpsnr針對重建後的 foreman_qcife.yuv 及原始foreman_qcif.yuv,獲得重建後foreman_qcife.yuv的PSNR值為34.839083

STEP8
接下來用YUViwer.exe真正觀察影片差異

左邊為原始影像,右邊為重建影像
因為封包遺失率為0.01 所以好像也不怎麼明顯
不過放大後看就有差了,畫面會比較霧些

2008年6月4日 星期三

gmap進度

終於找到存區域設定端點座標的變數了 ->endPointsMarker[i]

但是這個變數存在於function內,非廣義變數,要看完全部才能確定是否另設成廣義變數
因為endPointsMarker[i]出現在很多函式內,用不同名稱的引數做傳遞。
目前想到兩個方法:
1.用廣義變數,一但對點做任何變動或更新,就改變值(字串)。但是會更動很多地方..
2.也許只要在端點移動結束且勾選已設定好區域在抓函式內的變數就好(物件)。

終於有點進度了~
但是資料庫那邊出現
Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '140.115.51.5' (10060) in C:\Inetpub\wwwroot\php_pratice_gmapuser\db.php on line 8

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Inetpub\wwwroot\php_pratice_gmapuser\db.php on line 10

連線無法建立,孤狗結果是資料庫server那邊有問題,要重開,再跟他們說吧~