2008年10月12日 星期日

如何將自製yuv420檔案給JM H.264編解碼

 

為這件事測試了兩三天
當預設的foreman系列已經可以正常的編碼解碼
要怎麼把自製的未壓縮yuv影片丟給h.264解碼呢?

錯誤分隔線
我最先使用VirtualDub-1.8.6將檔案轉成yuv形式
在完整壓縮模式中選擇Helix YV12 YUV的壓縮
理論上是要得到YUV420P的檔案(把壓縮出來的影片丟到VLC的確也是可以看)
然而丟去給JM編碼成h.264卻總是錯誤
而且解回來的東西也總是錯誤的

正確分隔線
首先推薦一款軟體YUVTools(我是用試用版3.0)
http://www.sunrayimage.com/
用YUVTools的avi轉成YUV
YUV檔案的設定(如下圖)
image

在這裡我要強調Image Resolution的設定
我影片是用640*480的
依照上圖我是設定成Customized WxH=640*480
但有沒有發現他還有個選項VGA640*480
但是兩個是不一樣的!!!!!
YUV格式的東西我不是很懂,也許是存檔後Header不相同
但以結果論要設成 Customized WxH=640*480  JM才可以正常編碼

轉出來的YUV檔你丟到VLC看會發現他只會出現綠頻
但用YUVTools裡面的YUVPlayer設定好則可以正常播放
「註」YUVPlayer播放VirtualDub轉出來的東西反而會顯示錯誤 怎麼調都調不好

大概就降
用這個軟體編出來的YUV丟給JM code編出來的test.264用VLC可以看
解回來的test_dec.yuv VLC不能看但是YUVPlayer可以看

有問題的話可以問我
怎麼問我我也不知道
我一定要碩二順利畢業  H.264可惡啦!

4 意見:

yslin 提到...

Hello 你好:


我想請問你,JM 的程式抓回來後要怎麼去執行 ?

我抓的是JM 17,用Visual Studio 2008.


我有找到一本書

但裡面只有H.264 code 的部份trace

沒有告知要怎麼執行,

如果以Foreman.yuv 檔案的編碼為例

要對哪一個程式或專案進行編譯,

才能看到結果 ?


請問你有相關的教學檔嗎

或可以請你說明嗎


謝謝你

:)


yslin

提到...

您好:

關於JM 的程式抓回來後要怎麼去執行?
請參照JM官網上的說明檔案
( http://iphome.hhi.de/suehring/tml/JM%20Reference%20Software%20Manual%20%28JVT-AE010%29.pdf )

1.首先開啟提供VC2008的專案檔"jm_vc9.sln"
參照PDF說明檔案2.1節(Windows using MS Visual Studio .NET)
2.在正確路徑command Line下編碼Foreman.yuv成H.264
看PDF說明檔案第3.1節(Encoder Syntax)

請多利用PDF說明檔,希望對你有幫助

yslin 提到...

真抱歉今天才又找到你的blog :

非常謝謝你提供的資訊

這對我有很大的幫助

:)

Frank 提到...

請問一下 :

當我要模擬時,packet loss rate 3%,5%... 要如何去設定,
我參考JM文件裡看不出它的設定,是要用到無線網路來模擬,還是只要從rtp_loss其中的程式去設定呢 ?


謝謝

張貼留言