版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Java實現(xiàn)視頻網(wǎng)站的視頻上傳及視頻播放功能
JJaa碼視頻制作多媒頻加ffmp制,L能ffmp2.不對ff能解
實例數(shù)據(jù)實例dropcrea);descaaa
va實碼、視頻網(wǎng)站中供應(yīng)的作的播放器來播媒體視頻處理工加水
印等。
peg視頻采集功同時還支持以能支持的格式peg能解析的
格不能支持的格式fmpeg無法解解析的)格式.例是將上傳視頻據(jù)
庫庫MySQL5.5例所須要的數(shù)據(jù)pdatabaseifatetabletb_id
intnottitlevarchsrcvarcharpicturevardescriptvauptime
varcctb_media;實現(xiàn)視視頻關(guān)鍵的在線視頻播放播放該文件.
項工具FFmpeg有功能特別強大以RTP方式將視格式:
(asx,式析的文件格式頻轉(zhuǎn)碼為flv格據(jù)庫腳本fexists
db_m_media(nullprimaryar(50)notn(200)notnuchar(200)
norchar(400)char(40)comm視頻網(wǎng)站鍵幀抽放功能,播放的
項目中用制作的有特別強大的功大,不僅可以采視頻流傳送給asf,
mpg,w式(wmv9,rm,rm格式,該格式fmediaplayer;ykeyautoinull
commentullcommentotnullcommcomment'視頻ment'上傳口寸
站的視抽圖,的都是FLV格式的player,swf功能包括視頻采集
視頻采集卡給支持RTSP的wmv,3gp,mpmvb等),可以先ffnipeg支
持,;createdatabincrementcot'視頻名稱''視頻存放地ment
'視頻截頻描述‘,時間'視頻上及視式的文件,它是f播放
器.采集功能、視卡或USB攝像流媒體服務(wù)器p4,mov,avi先用
別的工具所以我們實例basedbjnedimnient'主鍵',地址',截
圖',上傳、視頻播放是Flash動畫文視頻格式轉(zhuǎn)換、像頭的圖
像,還器,支持直播應(yīng),flv等)具(mencoder)轉(zhuǎn)例中須要
ffmpeiaplayer;use',視頻轉(zhuǎn)放功能文件,可通過F、視頻抓
圖、還可以進(jìn)行屏幕應(yīng)用。
轉(zhuǎn)換為avi(ffeg視頻處理工dbmediapla轉(zhuǎn)能Flash給
視幕錄fmpeg工具.ayer;項目上傳在上結(jié)構(gòu)圖:傳視頻界面設(shè)
計上傳文件時,F(xiàn)o計rm表單中eenctype屬性值必需為
multipart/form--data.模塊界面設(shè)計如下圖:enctappl表單
mult表單text表單業(yè)務(wù)面對對象pack/****type屬性
值說lication/x-w單數(shù)據(jù)被編碼為tipart/form-單數(shù)據(jù)被編碼為
t/plain單數(shù)據(jù)以純文本務(wù)接口定義向接口編程,接象來創(chuàng)建.這
樣kagecom.webMediaDao.ja說明ww-form-urle為名稱/值對,這
data為一條消息,頁本形式進(jìn)行編碼口中定義系統(tǒng)就避開編碼中
app.dao;impovaencoded這是標(biāo)準(zhǔn)的編頁面上每個控件碼,其
中不含任統(tǒng)功能模塊.這中的某些業(yè)務(wù)遺ortjava,uti編碼格式件
對應(yīng)消息中任何控件格式這樣便利理清業(yè)遺漏等,同時擴(kuò)
il.List;impo的一部分的字符業(yè)務(wù),同時接口擴(kuò)展性也增加rt
com.webap口的對象必需由了.pp.entity.Me由實現(xiàn)了該接edia;
接口的**?version:
1.1**?author:
蘇若年ahref=maiIto:DennisIT@163發(fā)送郵件/a*
*?since
1.0創(chuàng)建時間:2013-2-07上午10:19:54
**TODO:interfaceMediaDao.javaisused
for…**/publicinterfaceMediaDao{/***
視頻轉(zhuǎn)碼*?paramffmpegPath轉(zhuǎn)碼工具的存放路徑
*@paramupFilePath用于指定要轉(zhuǎn)換格式的文件,要截圖的視頻
源文件*@paramcodcFilePath格式轉(zhuǎn)換后的的文件保存
路徑*@parammediaPicPath截圖保存路徑*
?return*?throwsException*/publicboolean
executeCodecs(StringffmpegPath,StringupFilePath,String
codeFilePath,StringmediaPicPath)throwsException;
/***保存文件*?parammedia*?return
*?throwsException*/publicboolean
saveMedia(Mediamedia)throwsException;/***查詢
本地庫中全部記錄的數(shù)目*?return*?throws
Exception*/publicintgetAlIMediaCount()throws
Exception;/***帶分頁的查詢*@param
firstResult*?parammaxResult*?return
*/}接口
code
publicList/***依據(jù)Id查*@parami*?return*?throws
*/publicMedi口的實現(xiàn),這里/***視頻轉(zhuǎn)碼*@paramf*@param
convertconvertconvertvert.add(cod//倉J建
ListStcutpic.cutpic.cutpic.以是轉(zhuǎn)換的flv
cutpic.cutpic.cutpic.cutpic.cutpic.
cutpic.cutpic.cutpic.cutpic.cutpic.
booleanProcesstry(buibui
buibuibui//錯誤輸出都將與
〃因的輸出變得更容}catchmarSys
e.p}
return}.add(22050.add(-r);.add(24);.add(-y);cFilePath);
一個List集合ringcutpicadd(ffmpegPaadd(-i);add(upFilePav
文件)add(-y);add(-f);add(image2add(~ss);add(17);/add(-t);
/add(0.001)add(-s);/add(800*280add(mediaPicmark=
trueBuilderbuilidermandlder.redireclder.start()Ider
mandlder.redirec假如此屬性為與標(biāo)準(zhǔn)輸出合并因此兩者均可使簡
單(Exceptionk=false;
tem.out.prinrintStackTramark;);〃設(shè)〃添加參數(shù)合來
保存從視c=newArraath);ath);//同上);//添加參數(shù)//添
加起始時〃添加參數(shù));//添加持〃添加參數(shù)0);//添加ePath);
//添e;Ider=newPd(convert);ctErrorStrea);
d(cutpic);ctErrorStrea為true,則任并,運用Process
builder,e){ntln(e);ace();設(shè)置幀頻數(shù)n-y",該參視頻中截
取圖片ayListStrin上(指定的文數(shù)M-ss”,該時間為第17秒”
-t”,該參持續(xù)時間為1毫”-S”,該參與截取的圖片大添加截取
的圖ProcessBuildam(true);am(true);任何由通過此對
s.getlnputStstart();參數(shù)指定將覆蓋片的吩咐ng();件即可以
是轉(zhuǎn)參數(shù)指定截取秒數(shù)指定持續(xù)時毫秒數(shù)指定截取的大小為
350*24片的保存路徑der();對象的startream()方法讀蓋已存在
的文轉(zhuǎn)換為flv格式取的起始時間時間的圖片大小40徑()方
法啟動的讀取。
這使得關(guān)文件式之前的文件的后續(xù)子進(jìn)程關(guān)聯(lián)錯誤消
息件,也程生成息和相系統(tǒng)因為方法pack/******
********/p對
象
}統(tǒng)中可能存在多為假如對象new法即可.kage
com.webDaoFactory.?version:
?author:
?sinceTODO:publicclass象private
sta〃單例設(shè)計模privateDao}publicstatreturn}
publicstatreturn)多個模塊,這些w太多,會不必
app.dao;impojava1.1蘇若年:
1.0classDaoDaoFactoryticDaoFacto模式,私有
構(gòu)造Factory(){icDaoFactordaoFactory;icMediaDaonew
MediaDao些模塊的業(yè)務(wù)D必要的奢侈資源ortcom.webaahref=mai
創(chuàng)建時間:oFactory.jav{〃工廠模式orydaoFacto造,對外供應(yīng)獲
rygetlnstangetMediaDaooImpl();DAO可以通過源.所以工
r,app.dao.implilto:DennisI2013-2-vaisusedf式,生產(chǎn)
Dao對0叮=newDa獲得創(chuàng)建的對nce(){o(){工廠來管理,需采
納單例模式.MediaDaoImpT@163發(fā)07下for...對象,
面對接口aoFactoryO;象的唯一接口須要的時候直式,私有構(gòu)造,提
P1;發(fā)送郵件/a下午02:18:51編程,返回實現(xiàn)口,干脆供應(yīng)即可.
供應(yīng)對外可訪現(xiàn)業(yè)務(wù)接口定訪問的定義的視圖下
packimpojavaimpojavajavaimpoorg.org.impocom./*****
*********/p
圖提交懇求,給kagecom.webortjava.io.a.util.List;ort
javax.seax.servlet,hax.servlet,hortorg.apacapache
mapachemortcom.webawebapp.entiMediaServic@version:
?author:
?sinceTODO:publicclasspublicvoid
thrdoPost(}publicvoidtarPrintWr限制器,限
制器app.serviceFile;import
rvlet.Servlettp.HttpServttp.HttpServhe
mons.fons.fileuploons.fileuplopp.dao.DaoFaty.Media;impe.jav
1.1蘇若年
1.0classMedMediaServicdoGet(HttpSows
ServletErequest,resdoPost(HttpowsServletEiterout=r器
分析懇求參;
java.io.lOEetContext;imvlet;importvletResponsefileupload.Fo
ad.disk.Disoad.servlet,actory;imporportcom.webahref=mai
倉ij建時間:diaService.jceextendsHServletRequeException,
Isponse);pServletRequException,Iresponse.get參數(shù),進(jìn)行相應(yīng)
Exception;immportjavax.javax.servle;
Fileitem;impskFileltemFaServletFilerr
com.webapbapp.util.Dailto:DennisI2013-2-javais
usedHttpServletestrequest,lOExceptionuest
requestlOExceptiontWriter();的業(yè)務(wù)調(diào)用處mport
java,ioservlet.Servet.發(fā)08下dfor
{HttpServlet{,HttpServle{處理.servlet控
o.PrintWritevletExceptiopServletRequtDao;import發(fā)送由B件/a
下午02:24:47tResponsereetResponser限制器相關(guān)代er;import
on;importuest;importespouse)response)代碼如
MediaDaomediaDao=DaoFactory.getMediaDaoO;String
message=;Stringuri=
request.getRequestURI0;Stringpath=
uri.substring(uri.lastlndexOf(/),uri.lastlndexOf(.));
if(/uploadFile.equals(path)){〃供應(yīng)解析時的一
些缺省配置DiskFileltemFactoryfactory=new
DiskFileltemFactory();〃創(chuàng)建一個
解析器,分析Inputstream,該解析器會將分析的結(jié)果封裝成一個
Fileltem對象的集合〃一個Fileitem對象對應(yīng)一個
表單域ServletFileUploadsfu=new
ServletFileUpload(factory);try
{Mediamedia=newMediaO;
ListFileltemitems=sfu.parseRequest(request);
booleanflag=false;//轉(zhuǎn)碼勝利與否的標(biāo)記
for(inti=0;iitems.size();
i++){Fileitemitem=items,get(i);
〃要區(qū)分是上傳文件還是一般的表單域
if(item.isFormFieldO){//isFormFieldO為true,表示這不是文
件上傳表單域〃一般表單域
StringparamName=item.getFieldName();
/*StringparamValue二
item.getStringO;
System,out.printin(參數(shù)名稱為:+paramName+,對應(yīng)的參數(shù)值
為:+paramValue);*/
if(paramName.equals(title)){me
dia.setTitle(now
String(item.getStringO.getBytes(IS08859-1),UTF-8));
)
if(paramName.equals(descript)){
media.setDescript(new
String(item.getStringO.getBytes(ISO8859-1),UTF-8));
)
}else{〃上傳文件
//System,out.println(上傳文件+item.getNameO);
ServletContextsctxthis.getServletContext();
〃獲得保存文件的路徑String
basePath二sctx.getRealPath(videcs);
〃獲得文件名StringfileLrl=
item.getNameO;〃在某些操作系統(tǒng)
±,item.getName0方法會返回文件的完整名稱,即包括路徑
StringfileType=fileUrl.substring(fileUrl.lastlndexOf(.));
〃截取文件格式〃自定義方式產(chǎn)生文件
名StringserialName二
String.valueOf(System.currentTimeMi11is());
〃待轉(zhuǎn)碼的文件FileuploadFile=new
File(basePath+/temp/+serialName+fileType);
item,write(uploadFile);
if(item,getSize()500*1024*1024){
message二li上傳失?。∧蟼鞯奈募?,系統(tǒng)允許最大文件
500M/H;}
StringcodcFilePath=basePath+/+serialName+.flv;
〃設(shè)置轉(zhuǎn)換為flv格式后文件的保存路徑
StringmediaPicPath=basePath+/images+File.separator+
serialName+.jpg;〃設(shè)置上傳視頻截圖的保存路徑
//獲得配置的轉(zhuǎn)換工具(ffmpeg.exe)的存放路徑
StringffmpegPath=
getServletContext().getRealPath(/tools/ffmpeg.exe);
media.setSrc(videos/+serialName+.flv);
media.setPicture(videos/images/+serialName+.jpg);
media.setUptime(DateTimeUtil.getYMDHMSFormat());
〃轉(zhuǎn)碼flag
=mediaDao.executeCodecs(ffmpegPath,
uploadFile.getAbsolutePath(),codcFilePath,
mediaPicPath);}}
if(flag){〃轉(zhuǎn)碼勝利,向數(shù)據(jù)表中添加該視
頻信息mediaDao.saveMedia(media);
message=li上傳勝利!/li;}
request.setAttribute(message,message);requ
resp
resp}
uest.getRequ}
c}}if(/qu
Listry
ponse);}c))
if(/plStrintMed
if(}try)
c}reqreqponse);}}
estDispatcheatch(Excepte.printStacthrownew
SeryAll.equatMediamed{mediaList=request,set
request,getatch(Excepte.printStacay.equals(pingidstr二
mediald=~iamedia=nnull!=idstr)mediald=I{media二
medatch(Except
e.printStacuest.setAttruest.getRequer(media_uptione)
{ckTraceO;ServletExcepals(path)){diaList;=
mediaDao.qtAttribute(tRequestDisptione)
{ckTrace();path)){request,get-1;
null;){Integer.parsdiaDao.querytione)
{ckTrace();ribute(mediuestDispatchpload.jsp).ption(e);
queryALlMedimediaList,patcher(medtParameter(selnt(idstr)yMe
diaById(mia,media);her(media_pforward(requa(0,5);
mediaList)dia_list.jspid);;mediald);
layer,jsp).uest,respons;).forward(r.forward(reqso);request,
quest,可以相關(guān)%@%?%@%requ%!D0htt
以通過分頁查找關(guān)代碼如下:pagelanguapageimportpage
importstringpathStringbaseuest.getScheOCTYPEhtml
tp://.webapp=jav£.util.二request.gPath=me()+://+rPUBLIC
-//Worg/TR/html4op5,展示到首o(hù)ntentType=p.entity.*%*%
getContextParequest.getSW3C//DTDHTM4/loose.dtd首頁,相應(yīng)特
效text/html;%ath();ServerName()ML4.01Tran效可以運用
JScharset=UTF-+:+requestnsitional//EN實現(xiàn).-8
pageEncot.getServerPNoding=UTF-8Port()+path+%+/;htmlhead
title視頻列表/titlelinkrel=stylesheettype=text/css
href=skin/css/style,css/linkscripttype=text/javascript
src=skin/js/jqueryl.3.2.js/scriptscript
type=text/javascript$(function(){varsWidth=
$(#focus).width();〃獲得焦點圖的寬度(顯示面積)varlen
=$(ttfocusulli).length;〃獲得焦點圖個數(shù)varindex=0;
varpicTimer;〃以下代碼添加數(shù)字按鈕和按鈕后的半透
亮條,還有上一頁、下一頁兩個按鈕varbtn=div
class=<btnBg,/divdivclass='btn';for(vari=0;i
len;i++){btn+=span/span;}btn+=/divdiv
class="preNextpre'/divdivclass="preNextnext'/div;
$(#focus).append(btn);
$(ttfocus.btnBg).css(opacity,0.5);〃為小按鈕添加鼠標(biāo)
滑入事務(wù),以顯示相應(yīng)的內(nèi)容$(#focus.btn
span).css(opacity,0.4).mouseenter(function()
{index=$(#focus.btnspan),index(this);
showPics(index);}).eq(0).trigger(mouseenter);//
上一頁、下一頁按鈕透亮度處理
$(#focus.preNext).css(opacity,0.2).hover(function()
{$(this).stop(true,false).animate({opacity:0.5},30
0);},function()
{$(this).stop(true,false).animate({opacity:0.2),30
0);});〃上一頁按鈕
$(#focus.pre),click(function(){index一二1;
if(index==-1){index=len-1;}
showPics(index);});〃下一頁按鈕
$(#focus.next).click(function(){index+=1;
if(index==len){index=0;}showPics(index);});
〃本例為左右滾動,即全部li元素都是在同一排向左浮動,所以這
里須要計算出外圍U1元素的寬度$(#focus
ul).css(width,sWidth*(len));〃鼠標(biāo)滑上焦點圖時停
止自動播放,滑出時起先自動播放$(Sfocus).hover(function()
{clearinterval(picTimer);},function()
{picTimer=setinterval(function()
{showPics(index);index++;
if(index==len){index=0;}},4000);〃此4000代
表自動播放的間隔,單位:
毫秒)).trigger(mouseleave);〃顯示圖片函
數(shù),依據(jù)接收的index值顯示相應(yīng)的內(nèi)容function
showPics(index){//一般切換varnowLeft=
-index*sWidth;//依據(jù)index值計算ul元素的left值
$(#focusul).stop(true,false).animate({left:nowLeft},300);
〃通過animate。調(diào)整ul元素滾動到計算出的position
//$(#focus.btnspan).removeClass(on).eq(index).addClass(on);
〃為當(dāng)前的按鈕切換到選中的效果$(#focus.btn
span).stop(true,false).animate({opacity:0.4),300).eq(index)
.stop(true,false),animate({opacity:1),300);//為當(dāng)前的按鈕
切換到選中的效果}});/script/headbodydiv
class=wrapperhl最新視頻/hldivid=fccus
ul%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GB-T 39941-2021木家具生產(chǎn)過程質(zhì)量安全狀態(tài)監(jiān)測與評價方法》專題研究報告
- 《GBT 13698-2015 二氧化鈾芯塊中總氫的測定》專題研究報告
- 《寵物鑒賞》課件-寵物魚的簡介
- 2026年河南工業(yè)和信息化職業(yè)學(xué)院單招職業(yè)技能考試題庫帶答案詳解
- 運動健康管理指導(dǎo)協(xié)議
- 鐘表行業(yè)鐘表維修高級技師崗位招聘考試試卷及答案
- 2025年高新區(qū)預(yù)防接種合格證培訓(xùn)考核試題及答案
- 2025年常州市城管協(xié)管人員招聘筆試備考試題及答案解析
- 2025年刺繡機(jī)電控項目發(fā)展計劃
- 高鉀食物的選擇與益處
- 2025中央廣播電視總臺招聘144人筆試歷年題庫附答案解析
- 2026年瓦工職業(yè)技能鑒定考試題庫及答案
- 2025年云南省人民檢察院聘用制書記員招聘(22人)筆試考試參考題庫及答案解析
- 胃腸外科圍手術(shù)期護(hù)理要點
- 竣工資料歸檔與管理流程
- 購車合伙協(xié)議書模板
- 二手摩托車買賣合同范本
- 2026年山西省財政稅務(wù)??茖W(xué)校單招職業(yè)傾向性測試題庫附答案
- 2025年阿里輔警協(xié)警招聘考試備考題庫及答案1套
- 黃寶康藥用植物學(xué)課件
- 2025年天車工(初級)考試試卷及模擬題庫及答案
評論
0/150
提交評論