黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 教你輕松制作Java視頻播放器

教你輕松制作Java視頻播放器

更新時(shí)間:2019-09-25 09:13:26 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3462次



  當(dāng)年入坑Java是因?yàn)樗目缙脚_(tái)優(yōu)勢(shì)。那時(shí)我認(rèn)為,”編寫一次,處處運(yùn)行。”這聽上去多么牛逼,應(yīng)該是所有語(yǔ)言發(fā)展的終極之道,java勢(shì)必會(huì)一統(tǒng)天下。


  然而事實(shí)證明,那時(shí)的我還是太年輕。


  正所謂魚和熊掌不可兼得,若要享受跨平臺(tái)帶來(lái)的方便,便不可避免地要接受性能上的不足。事實(shí)上,java一直在致力于提高虛擬機(jī)的性能(JIT等技術(shù)),但面對(duì)對(duì)實(shí)時(shí)計(jì)算性能要求很高或涉及到用硬件優(yōu)化的任務(wù)(視頻的硬件編碼、解碼)時(shí),仍遠(yuǎn)遠(yuǎn)比不上c或c++。因此,很少能夠看到有人用java來(lái)寫這類軟件。


  回到正題,要想寫一個(gè)視頻播放器,勢(shì)必要處理不同的視頻格式(mp4、avi、rmvb、flv等)。每一類格式的視頻都必須要有對(duì)應(yīng)的解碼器才能播放。絕大多數(shù)解碼器的庫(kù)都是基于效率高的c或c++寫成的,用java的寫解碼器的庫(kù)非常少。


  因此,要想用java寫一個(gè)視頻播放器,只有以下兩個(gè)選擇:


  ?使用純java編寫,自己編寫主流視頻格式的軟件解碼器、結(jié)合Java媒體框架(JMF)完成視頻解碼任務(wù)。


  ?使用jni調(diào)用現(xiàn)有的c或c++的解碼器庫(kù),完成視頻解碼任務(wù)


  使用java自己編寫軟件解碼器的優(yōu)點(diǎn)是能夠真正地實(shí)現(xiàn)跨平臺(tái),也能很方便靈活地與swing框架結(jié)合。然而缺點(diǎn)是太過(guò)麻煩,先不說(shuō)軟件解碼器的效率問(wèn)題,各種主流視頻格式的解碼器的車輪能否成功地重造都是一個(gè)值得商榷的問(wèn)題。


  因此,我采用了第二種辦法,通過(guò)jni調(diào)用現(xiàn)有的第三方視頻解碼庫(kù)來(lái)完成視頻解碼的任務(wù),而視頻的顯示、控制的邏輯則交由java來(lái)完成。這樣便能夠?qū)崿F(xiàn)一個(gè)效率較高的視頻播放器。值得一提的是,雖然根據(jù)平臺(tái)類型來(lái)調(diào)用不同平臺(tái)也能夠?qū)崿F(xiàn)跨平臺(tái),但是會(huì)受到諸多限制,這是不可避免的。


  接下來(lái)便來(lái)看看具體怎么實(shí)現(xiàn)一個(gè)視頻播放器吧。


  正文


  解碼器的選擇


  視頻格式有很多,解碼器也有很多,因此要分別尋找對(duì)應(yīng)的解碼器并封裝成jni接口進(jìn)行調(diào)用是一個(gè)繁瑣的任務(wù),因此我們可以找一個(gè)已經(jīng)封裝了多種主流解碼器的媒體處理框架(視頻播放器)的庫(kù)來(lái)直接進(jìn)行調(diào)用。VLC是一個(gè)非常好的選擇。


  VLCmediaplayerVLC是一款自由、開源的跨平臺(tái)多媒體播放器及框架,可播放大多數(shù)多媒體文件,以及DVD、音頻CD、VCD及各類流媒體協(xié)議。


  在vlc的庫(kù)上,我們要用jni進(jìn)行一定的封裝,從而能用java來(lái)調(diào)用視頻的解碼和播放控制接口。好在我們不必重造車輪。vlcj是一位國(guó)外開發(fā)者用java開發(fā)的一個(gè)媒體處理框架,底層使用的正是vlc播放器,通過(guò)jni調(diào)用vlc來(lái)完成音頻的解碼任務(wù)。

  

  開發(fā)流程


  ?安裝VLCMediaPlayer(我安裝的版本是2.2.4,最好安裝到默認(rèn)目錄)


  ?建立普通maven項(xiàng)目,添加vlcj的依賴


  image.png

  ?正式開發(fā)


  接下來(lái)就是代碼干貨了,將會(huì)介紹三個(gè)項(xiàng)目,都是基于這個(gè)vlcj的視頻播放器。


  入門示例


  這是vlcj作者提供的入門示例程序,能夠快速實(shí)現(xiàn)一個(gè)簡(jiǎn)單的視頻播放器,當(dāng)然,僅僅是播放而已,不提供控制功能。


  這里用的vlcj中提供的內(nèi)嵌視頻播放組件EmbeddedMediaPlayerComponent,通過(guò)其中的mediaPlayer中的playMedia方法可以直接播放視頻,視頻會(huì)渲染到EmbeddedMediaPlayerComponent上。EmbeddedMediaPlayerComponent這個(gè)組件中提供了很多其他功能,若要實(shí)現(xiàn)一個(gè)普通的視頻播放器,了解這個(gè)組件便足夠了。

  

  代碼

  image.png

  vlcj-player


  這是vlcj作者自己基于vlcj寫的一個(gè)開源播放器,功能很全面,完全可以用來(lái)作為平時(shí)的視頻播放器來(lái)使用。由于這個(gè)項(xiàng)目?jī)?nèi)容較多,不便將代碼列出。


  javaplayer


  這個(gè)是我基于vlcj寫的一個(gè)簡(jiǎn)單的視頻播放器,支持一些簡(jiǎn)單的視頻播放控制功能和播放彈幕的功能。


  后記


  在開發(fā)過(guò)程中遇到一些坑,如視頻渲染組件的透明問(wèn)題,以及swing的重繪機(jī)制導(dǎo)致的一些界面顯示上的bug。有些完全解決了,有些則只是采用曲線救國(guó)的方法解決的。如果你在開也遇到了這些問(wèn)題,登錄動(dòng)力節(jié)點(diǎn)IT培訓(xùn)官網(wǎng)咨詢?cè)诰€客服老師。


  


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 奇米影视亚洲狠狠色777不卡 | 成人网18视频网站 | 免费观看性欧美大片无片纯爱 | 亚洲成人第一 | 欧美视频网站免费看 | 国产一卡2卡3卡四卡网站 | 最新欧美精品一区二区三区 | 一个人看的www视频免费观看 | 日韩欧美一区二区在线观看 | 久久国产成人午夜aⅴ影院 久久国产欧美日韩精品 | 天天碰人人 | 久久受www免费人成看片 | 国产91精品一区二区麻豆网站 | 欧美成人精品第一区 | 亚洲日本中文字幕天天更新 | 中文字幕成人网 | 又黄又爽的美女免费视频 | 无遮挡黄漫动漫yy动漫免费 | 国产精品一区在线观看 | 国产桃色在线成免费视频 | 曰批全过程免费视视频观看 | 草草免费观看视频在线 | 国产欧美一区二区三区久久 | 美妇乱人伦小说目录 | 深夜a| 亚洲国产成人精彩精品 | 日本久久不射 | 久久成人亚洲香蕉草草 | 在线观看国产剧情麻豆精品 | 狠狠狠狠狠狠 | 日韩在线观看中文字幕 | 狠狠躁夜夜躁人人躁婷婷视频 | 精品久久伊人 | 欧美成人黄色片 | 欧美a一级片 | 国产视频一区二区在线播放 | 日本一区欧美 | 99在线精品视频免费观里 | 亚洲 欧美 日韩在线 | 天天干天 | 成年福利片120秒体验区 |