2011-05-17 77 views
0

任務是製作一個jlabel在videocanvas上運行。 JLabel應該是透明的,沒有任何背景。通過JMF繪製JLabel

我在這裏找到了答案: Painting over JMF component 它至少可以在我的攝像頭上正常工作。但是,當我嘗試用通常的錄像檔案替換源我開始體驗到一個問題:

http://clip2net.com/clip/m25721/1305648619-clip-6kb.png

視頻仍然起着很好的(奇怪的 - 但我不能捕獲視頻 - 這是黑色的屏幕上,但在現實中仍然很好),但背景出現在我的JLabel下。它的格式爲:176 * 144(4:3),MPG1 = MPEG 1(VCD)。

我打開另一箇舊視頻160 * 120(4:3),IV41 = Intel Indeo R4.1。嗯 - 我做了一個屏幕,它工作正常 - 我們沒有預期的背景。

http://clip2net.com/clip/m25721/1305649256-clip-50kb.jpg

我嘗試更多 - 並且得到了積極的結果沒有背景IV50 =英特爾的Indeo R5.1,IV32 =英特爾的Indeo R3.2,IV41 =英特爾的Indeo R4.1和... DIVX = OpenDivx v4。所有常見的mpeg播放不好(在JLabel下有灰色背景)。

也許有另一種方法可以在視頻上繪製jlabel嗎?或者這種方法可以修復 - 請幫助。

我剛添加的JLabel到上面的代碼那樣:

JLabel jl = new JLabel(); 
jl.setText("This is my JLabel that will cross the videoframe"); 
jl.setBounds(50,50,300,50); 
jLP.add(jl, 0); 

回答

0

嘗試畫JLabelBufferedImage,因爲我在這個LabelRenderTest.java source做。然後在視頻上繪製圖像。

然後可以在任何需要看到圖像的位置繪製圖像。將其緩存並在每幀的不同位置繪製以模擬文本滾動。

+0

爲每個視頻幀重新創建緩衝圖像是一個好主意嗎?文本會移動 - 所以我需要重新創建一個雙緩衝圖像。 – Malex 2011-05-18 00:54:37

+0

@Malex:「文字會移動 - 所以我需要重新創建一個雙緩衝圖像。」當然不是!看到我的答案編輯。在鏈接的源代碼中,JLabel的圖像在位置20,20處被稱爲「bi」。將它作爲類屬性並隨時隨地繪製。 – 2011-05-18 01:33:26

+0

不是。它根本不起作用。我仍然有矩形陰影。也許我應該嘗試使用圖像 - 不是jlabel?如果需要,我可以發佈整個代碼。 – Malex 2011-05-22 19:19:40