讓Swing播放YouTube串流影音(二) - 使用JWebBrowser
先前所介紹的JFlashPlayer和JVLCPlayer,雖然使用起來很方便、也很容易,不過對於想要自行製做播放面版或在播放時取得影片的相關資訊,就比較困難了。
而這邊介紹的JWebBrowser,就是用來解決這類的問題。
不過在此篇,主要是說明JWebBrowser要如何播放YouTube….
在JWebBrowser中有個方法可以讓我們去設定網頁的內容
public boolean setHTMLContent(String html)
我們可以利用這個方法,先行製做想要的【網頁】(包含了播放時所需要的元件來源)
也就是透過<embed></embed>的方式來設定Youtube的影音來源,這段code可以在Youtube的網頁上找到 - 【嵌入】,之後利用Java的IO,把檔案讀進來後,傳給此方法,就可以在程式執行時,播放這部影片了。
另外,JWebBrowser提供了一些設定,可以讓我們來決定JWebBrowser的一些項目要不要出現:
public void setBarsVisible(boolean isBarsVisible)
public void setButtonBarVisible(boolean isButtonBarVisible)
public void setLocationBarVisible(boolean isLocationBarVisible)
public void setMenuBarVisible(boolean isMenuBarVisible)
public void setStatusBarVisible(boolean isStatusBarVisible)
底下是一個簡單的完整程式:
不過,當執行此程式的時候,會發現到幾個問題:
- 程式畫面不是很好,有些雜七雜八的東西在畫面上、影片的周圍有留白...等。
- 網頁程式寫死,不容易動態改變Youtube的影音網址。
針對第一點,要解決這些問題,就必須事先在網頁程式中,寫好修正這些問題的程式碼,或是直接透過JWebBrowser所提供的方法,在程式執行的時候修正。
public void executeJavascript(String javascript)
JWebBrowser提供的這個方法,能夠讓我們在程式中執行JavaScript
所以要解決先前提到的第一個問題,就可以先在網頁檔裡面,寫好相關的JavaScript,讓網頁直接呈現你想要的樣子,或是在程式中呼叫此方法來執行相關的JavaScript。
下面是修正後的程式與網頁程式碼:
HTML
到此,播到是沒什麼問題了。
不過對於要自行製做播放面版或在播放時取得影片的相關資訊的話,還是要花一些功夫。下一篇會說明如何解決這問題(包含上述的第二點問題)。
憶仙四,悟人生
很久沒有玩到這樣悲嘆、感傷,讓人真心流淚的遊戲了
我想從仙1之後就再也沒有過了吧...
破關時,聽著耳邊響起的【迴夢遊仙】...
一時之間不知道要說什麼...只有滿滿的惆悵感,不斷的從心中湧現...
如果說仙1是20世紀末的經典,仙4就是21世紀初的經典
這2個經典,雖然都是經典,但內含的意義卻大不相同
仙1講的是【宿命】,主題大多圍繞在【愛情】上面
仙4講的是【尋仙】,也帶點【宿命】的味道,但其內容,不僅僅只是在【愛情】上面
而是整個提昇到對人生的探討,不論是【親情】、【友情】、【愛情】等等
這些人生觀,在仙4都表達的淋漓盡致,令人動容...
仙4,不像以前有玩遊戲的感覺,而是好像在看一部小說,生動感人的小說。
確切地說更像一部連續劇,一部電影...
裡面的劇情,從大喜到大悲,都是自己一步步讓它發生的,無法避免,也無法改變。
結局比起仙1,不但悲,而且悲得莫名。
有一種不知為何而悲,不知為誰而悲的感覺湧現在心頭...
或許是因為這樣,才會讓自己深入其中,無法自拔...
有人認為這只過是個遊戲,不需看的太重
但人生如戲, 戲如人生,只要從中得到些什麼,不就值得了嗎
而且對許多人而言,仙4(仙劍)不僅僅只是個遊戲
它是一種文化,是快可以和金庸有著相同高度的文化產物
以前是,現在也是,以後更是如此
故事從青鸞峰開始,也從青鸞峰紿束
看似不變,卻是百年過後,景物依舊,人事已非...
【無所謂好或不好,人生一場虛空大夢,韶華白首,不過轉瞬。
惟有天道恆在,往復循環,不曾更改...】
這是戲裡的一句話,但又有多少人能參透?
或許只有把握住【生盡歡,死無憾】,才不枉費這一生吧...
讓Swing播放YouTube串流影音(一) - 初步介紹
讓Swing播放類似Youtube的串流影音,有許多OpenSource可以用(?)。在這裡使用的是DJ。
DJ - DJ Native Swing
要播放類似Youtube的串流影音,基本上可以根據不同的情況,透過DJ的 JFlashPlayer , JVLCPlayer , JWebBrowser 來做為播放的平台。
使用方法都很容易,直接看範例吧- JFlashPlayer
也就是embed tag 裡面的網址。不然JFlashPlayer會讀不到。
- JVLCPlayer
這個使用上比起第一個比較為複雜了,要先做網頁的分析來取得2個主要的值,可以參考這篇文章,下面是個example
這邊要注意一下【字串變數t】,它的值是會變動的,所以先前才會說要用分析的方法來取得。也就是說:如果寫死的話,執行起來不一定會順利...基本上是不會順利的XD
JWebBrowser可以做的事情比較多,我放到下篇來做說明 :)
FRC - Event Dispatching Thread (一)
不論何時,當我們執行一個Swing應用程式時,會有3個Thread自動被建立...
- main thread
- toolkit thread
- EDT
首先第一個是用來執行應用程式中的main()方法,第2個是用來監聽系統事件,像是鍵盤的輸入 or 滑鼠的移動....等等諸如此類的事件。
而取得的事件會被送到Event Dispatching Thread(以下簡稱為EDT)上面 ,也就是第3個thread。
EDT,它重要性中的其中一點就是處理元件的繪製,它透過 toolkit thread控制著事件的取得,然後分派給適當的元件,並且通知元件重繪(在適當的時候)。
例如:
如果我們在JTextFiled上面按下一個按鍵,EDT會分配這個事件到此元件的key listener,並送一個重繪要求(paint request)到事件佇列(event queue)上,之後EDT會將paint request從event queue上取出,並通知元件重繪它自己。
簡單的來說...
每件在AWT、Swing(元件)上所發生的事都在EDT上。
不過要注意的是,如果事件收到的比送出的快,EDT將會讓它們(指的是未送出的事件)排隊等待,直到可以被處理為止。
另外在EDT上執行長時間的操作,像是讀 or 寫一個大的檔案,將會block所有的UI。一旦進行著長時間的操作,這個時候將沒有事件會被分派而且螢幕不會更新。看起來就好像是停止的,或是很慢的,也就是類似deallock的情況發生。
下面的程式是一個簡單的Demo,用來表達在EDT中讀 or 寫一個大的檔案的情況 XD
很明顯的,在操作費時任務時,button因為等待而重繪失敗,直到任務處理完時,才有機會重繪。其實不只有button,而是整個Swing都在等待著這個任務結束,所以當我們在這期間去縮放Swing一樣會有凍結的情況發生,也不會對任何事件做出回應。
在Blog上使用syntaxhighlighter
為了讓程式碼看的清楚點,找了syntaxhighlighter,但是如果要在這裡使用有些問題要先解決
- JS
- <br/>
因為這邊沒辦法上傳JS檔,所以要先找到有提供syntaxhighlighter js的網站 - alexgorbatchev
接著把js的Link放在 【頁面模版】下【weblog網頁】的最下面,像這樣子:
這樣雖然可以運作,但會有br的問題,因為blog會自動將每行文字加上<br /> ......Orz
上網找瞭解法,就是在顯示前先替換掉就行了
不過還是有一個問題: 好像只能用textarea不能使用pre,用pre還是會顯示不正常,這有空再解吧
test:
有需要的參考一下吧。對了,不要擋JavaScript ......
幸福
有人擁有一切,但不快樂。也有人幾乎一無所有,卻快樂而且毫無掛罣。
一個人唯有胸中踏實,才不會感到空虛,才會感到幸福快樂。
單身的人,希望結婚。希望那個最最最最愛的男人或女人,會像及時雨一般的出現。那麼就可以過一份快樂的生活,擁有幸福了。
結婚的人,則認為婚姻是牢獄。希望早些脫逃,那麼便可以重新展開新生活,擁有快樂和幸福了。
年輕的少年,則認為家是桎梏。有朝一日,成長單飛,唯有翱翔在那海闊天空的世界,才會快樂幸福。
痕跡天涯的人,則期望歸鄉。彷彿住家中的每盞暖黃的燈火,都是幸福,他只嚮往擁有一個家。
求學中的學生,則希望早日畢業。脫離考試,不再受煎熬。唯有進入社會之後,才能夠變成一個獨立自主的人。擁有自己的工作和事業,才有幸福快樂可言。
一個成年人,為事業奔忙。無止無休,終日操勞,又不禁懷念起無憂無慮的求學時代,甚至做起重返校園的夢來了。
這樣看來,幸福永遠不在此時此地,幸福只存在那遙遠而不可期的未來。除此之外,幸福對於我們而言,也需要種種充分必要的條件。
有人說,他必須擁有華廈、高級進口車、穿名牌、吃鮑魚排翅,才有幸福快樂可言。也有人認為一個人必須擁有了地位和名聲,才會有幸福快樂,否則便是一個失意的人。
然而,我看到的卻是,一個人的快樂幸福與否,與一人的外在條件,未必具有必然的關係。有人擁有一切,但不快樂。也有人幾乎一無所有,卻快樂且毫無掛罣。一個人唯有胸中踏實,才不會感空虛,才會感到幸福快樂。這些並不是由外在來決定的。
有個故事說,一隻老貓追逐自己的尾巴,便問牠為什麼要這樣做?小貓答說:「我聽說對於貓族而言,最為美好的便是幸福。而幸福呢,就在我的尾巴上。所以我努力追逐我的尾巴,以獲得幸福。」
老貓輕輕搖著頭說:「我的孩子,我也曾思考過貓生活中的各種問題,但是,最後卻發現,每當我追逐自己的尾巴時,它總是躲來躲去。唯有當我認真做自己的事情的時候,尾巴卻形形不離地伴隨著我。」
這個小故事提醒我們的是,生活中其實無時無刻都存在著幸福,只是我們將它遺忘了。或者,更為尋常的情況,是我們把一切都視為理所當然,失去感受能力,聽而不聞,視而不見了。
現代人追求的是強力的麻醉和癮癖,以致於變得只能感受深刻的痛苦了。因為,平常的喜悅和歡樂對他而言,己然顯得太薄弱了。在許許多多的時刻,比方說睡了一場甜美的覺;打完一場盡興的球戲;看了一場精彩電影;吃了一餐美味…。甚至只不過窗外下著雨,室內卻有瓶花的香息和宛轉的音樂在繚繞;或者爬上山巔躺在草地上曬著溫煦的冬陽;或者不過是聚精會神好好地工作了一天…。在在無一不是美好的時光。
我告訴自己,這樣就叫幸福。沒錯!
生活中其實無時無刻都存在著幸福,只是我們將它遺忘了。或者,更為尋常的情況,是我們把一切都視為理所當然,失去感受能力,聽而不聞,視而不見了… …
讓Swing打造出Parleys網站中的效果(一)
Swing Application Framework 簡單介紹(四)
Actions
Swing Application Framework 打算利用Anntatin - @Action來取代ActionListener中的actionPerformed(ActionEvent e)方法。
太陽與海的教室
人啊最不可思議的事情就是變成大人後
就忘記自己曾經是孩子的事情
很容易就忘記兒時描繪過的夢想
念著魔法的咒語
”沒辦法 怪社會不好 大家都這麼做”
從今以後
你們的未來經常會碰壁
沒法翻越的時候 就會想要使用魔法的咒語
但是在使用的時候
你們就會變成你們討厭的大人
這個壁 不是真的牆壁 是一面鏡子
映出你們自身的鏡子
你們的敵人是你們自己
失去夢想的自己
說謊的自己
拜金的自己
在意他人目光的自己
想要踩在別人頭上的自己
祈禱別人不幸的自己
變得就算喜歡也說不出口的自己
變得就算討厭也說不出口的自己
立刻說果然是沒辦法
立刻放棄的自己
不相信別人的自己
不相信自己的自己
在你們的心中 有著這樣的自己
看著鏡子 有指著自己笑的自己
這是我對你們的期望
你們要按照自己所想改變
只按自己描繪的部份長大
不管是什麼樣的時代
不管在世界的什麼地方
請你要好好看著眼前的鏡子
這樣問
”你在做你自己嗎?”
”你活著嗎?”
”現在還活著嗎?”
現在問你們一個問題
用接下來的十年解答這個問題
不問姓名
不問學歷和職業
不問性別與國籍的你
是誰?
Swing Application Framework 簡單介紹(二)
看完,有些人可能心已經死了一半,還不是差不多,還不是做同樣的事,並沒有增加太多的便利性,整個工作量還是差不多。
這時候第二點的重要性就出來了 資源取得與國際化