DSpace擴增MediaFilter格式(安裝篇)
DSpace擴增MediaFilter的目錄:
本篇介紹DSpace擴增MediaFilter格式的安裝篇,安裝完之後,還要做一次[dspace]/bin/filter-media才能有展示篇的功能。
需求環境
- DSpace 1.5.0 release (1.4.2或之後的版本似乎也可以)
- 作業系統:CentOS 5 Final
- 必須要具備yum的功能
- 必須安裝OpenOffice 2.0以上
用yum安裝轉檔軟體
如果你不是root的話,先切換到root權限
[dspace@dspace ~]# su root
修改/etc/yum.repos.d/CentOS-Base.repo
[root@dspace ~]# vim /etc/yum.repos.d/CentOS-Base.repo
你可以上鳥哥來看一下vim文字編輯器要怎麼使用。
在該檔案最後加入以下設定:
[dag] name=Dag RPM Repository for Red Hat Enterprise Linux baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag gpgcheck=1 enabled=1
把金鑰加入RPM的資料庫
[root@dspace ~]# rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
如果你沒辦法下載RPM-GPG-KEY.dag.txt的話,可以下載我的備份檔案。(雖然沒什麼意義,他的伺服器掛點的話,之後yum也沒辦法安裝所需要的檔案啊。)
執行yum的安裝指令
[root@dspace ~]# yum -y install ffmpeg mencoder imagemagick python python-imaging
如果安裝都順利進行的話,那麼這個步驟就完成囉。
配置ZoomifyImage
到ZoomifyImage的計畫網站中去下載最新版本,目前是1.4版,也可以下載我另外備份的檔案(24.06MB,有點大喔)。解壓縮之後,擺到/opt/當中 。
在Linux指令列之下,你可以用wget下載檔案,然後利用tar解壓縮,將之移至/opt/當中。指令如下:
[root@dspace ~]# wget http://nchc.dl.sourceforge.net/sourceforge/zoomifyimage/ZoomifyImage1_4.tar.gz [root@dspace ~]# tar -zxvf ZoomifyImage1_4.tar.gz [root@dspace ~]# mv ZoomifyImage /opt/
ZoomifyImage必須搭配Python才能執行,所以要記得一定要在之前yum安裝步驟中安裝Python喔。
配置JODconverter跟OpenOffice
請下載JODconverter的檔案,取出lib資料夾之中的所有jar檔(除了commons-cli-1.2.jar跟commons-io-1.4.jar之外),放到[dspace]/lib跟Java安裝目錄的擴增目錄(如果你跟我一樣安裝的是JDK 1.6.0.06,那麼路徑就是/usr/java/jdk1.6.0_06/jre/lib/ext/)之中。或是下載我另外備份的檔案:jodconverter-2.2.2-lib.zip 。
然後伺服器端必需要開啟OpenOffice的服務,用SSH開啟的話不知為何會失敗,請到本機端執行以下指令:
[root@dspace ~]# /usr/lib/openoffice.org2.0/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
出現以下訊息的時候,表示正常開啟:
同樣的,也把這段指令加入開機執行的指令當中吧。
修改/etc/rc.local
[root@dspace ~]# vim /etc/rc.local
請把這段指令「/usr/lib/openoffice.org2.0/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard」加到最後去,這樣就大功告成了。
DSpace註冊Bitstream Format
開啟DSpace的管理介面,到「Bitstream Format Regisry(附加檔案(二進位檔案)格式登記)」當中,新增以下幾種檔案格式。支援等級皆選擇「已知」、取消「內部」的打勾。
MIME形式 | 名稱 | 完整描述 | 延伸檔名 |
video/x-msvideo | AVI | Audio Video Interleave | avi |
video/x-flv | FLV | Flash Video | flv |
video/x-ms-wmv | WMV | Windows Media Video | wmv |
application/vnd.rn-realmedia | RM | Real Media | rm |
application/vnd.rn-realmedia-vbr | RMVB | RealVideo Variable Bit Rate File | rmvb |
audio/3gpp | audio/3gpp | 3GPP Multimedia File | 3gp |
video/3gpp | video/3gpp | 3GPP Multimedia File | 3gp |
video/mp4v-es | MP4 | MPEG-4 Video File | mp4 |
application/zip | ZIP | ZIP | zip |
audio/mpeg | MP3 | MPEG-1 Audio Layer 3 | mp3 |
audio/mid | MID | Musical Instrument Digital Interface | mid |
audio/x-aac | AAC | Advanced Audio Coding | aac |
audio/flac | FLAC | Free Lossless Audio Codec | flac |
audio/ogg | OGG | Ogg | ogg |
audio/x-ms-wma | WMA | Windows Media Audio | wma |
audio/mp4a-latm | M4A | MPEG-4 Part 14 | m4a |
text/tab-separated-values | TSV | Tab-separated values | tsv |
text/csv | CSV | Comma-separated values | csv |
大部分的檔案格式在DSpace 1.5.0當中已經登錄了,特別是文件檔的類型,包括Microsoft Office跟OpenOffice系列,所以在此不特別敘述。目前我測試機上使用的Bitstream Format Registry資料表可以參考這個檔案,裡面有詳盡的設定,如果之後你發現有些格式沒有辦法正確辨識的話,再來比較這個檔案看看缺了哪些格式。
DSpace增加MediaFilter相關檔案
請將以下檔案下載,新增到指定的位置:
- mediafilter-dspace-api.zip
[dspace-source]/dspace-api/src/main/java/org/dspace/app/mediafilter/ - BitstreamDisplay.zip
[dspace-source]/dspace-jspui/dspace-jspui-api/src/main?java/org/dspace/app/webui/util/ - RetrieveZIPServlet.zip
[dspace-source]/dspace-jspui/dspace-jspui-api/src/main?java/org/dspace/app/webui/util/ - extension-jspui.zip
[dspace-source]/dspace-jspui/dspace-jspui-webapp/src/main/webapp/extension/
※預設是沒有extension這個資料夾的,請自行建立。
如果你的DSpace是預設的狀態,並且安裝過我之前介紹的XMLMetadata,那麼可以採用我的檔案:
- ItemTag.zip
[dspace-source]/dspace-jspui/dspace-jspui-api/src/main/java/org/dspace/app/webui/util - display-item.zip
styles.css.zip
[dspace-source]/dspace-jspui/dspace-jspui-webapp/src/main/webapp
如果你這些檔案已經做過更動,那麼取代的話會造成你設計的功能消失。因此接下來我介紹怎麼調整這些檔案。
DSpace調整display-item.jsp
位置在[dspace-source]/dspace-jspui/dspace-jspui-webapp/src/main/webapp/display-item.jsp
請在「<dspace:item-preview item="<%= item %>" />」程式碼之前,加入以下JavaScript跟CSS的引用語法,以便帶出jQuery UI等效果:
<script type="text/javascript" src="<%= request.getContextPath() %>/extension/jquery.js"></script>
<script type="text/javascript" src="<%= request.getContextPath() %>/extension/bitstream-display/thickbox.js"></script> <script type="text/javascript" src="<%= request.getContextPath() %>/extension/bitstream-display/jquery-ui/js/jquery-ui-1.7.1.custom.min.js"></script> <script type="text/javascript" src="<%= request.getContextPath() %>/extension/bitstream-display/doDialog.js"></script> <link rel="stylesheet" href="<%= request.getContextPath() %>/extension/bitstream-display/thickbox.css" type="text/css" /> <link rel="stylesheet" href="<%= request.getContextPath() %>/extension/bitstream-display/jquery-ui/css/smoothness/jquery-ui-1.7.1.custom.css" type="text/css" />
DSpace調整web.xml
位置在[dspace-source]/dspace-jspui/dspace-jspui-webapp/src/main/webapp/WEB-INF/web.xml
加入以下設定,讓DSpace擁有直接讀取zip檔案的功能:
<servlet> <servlet-name>retrieve-zip</servlet-name> <servlet-class>org.dspace.app.webui.servlet.RetrieveZIPServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>retrieve-zip</servlet-name> <url-pattern>/retrieve-zip/*</url-pattern> </servlet-mapping>
DSpace調整ItemTag.java
位置在[dspace-source]/dspace-jspui/dspace-jspui-api/src/main/java/org/dspace/app/webui/util/ItemTag.java
主要是使用BitstreamDisplay.java來分析、製作要顯示的連結。BitstreamDisplay.java詳細的用法我會另開一篇教,現在先簡介一下加入BitstreamDisplay功能的作法。
先在開頭引用BitstreamDisplay
import org.dspace.app.webui.util.BitstreamDisplay;
然後找到私有方法listBitstreams(),修改顯示連結的部份。請找到以下部份的程式碼:
// Work out what the bitstream link should be // (persistent // ID if item has Handle) String bsLink = "<a target=\"_blank\" href=\"" + request.getContextPath(); if ((handle != null) && (bitstreams[k].getSequenceID() > 0)) { bsLink = bsLink + "/bitstream/" + item.getHandle() + "/" + bitstreams[k].getSequenceID() + "/"; } else { bsLink = bsLink + "/retrieve/" + bitstreams[k].getID() + "/"; } bsLink = bsLink + UIUtil.encodeBitstreamName(bitstreams[k] .getName(), Constants.DEFAULT_ENCODING) + "\">"; out .print("<tr><td headers=\"t1\" class=\"standard\">"); out.print(bsLink); out.print(bitstreams[k].getName()); out.print("</a>"); if (multiFile) { out .print("</td><td headers=\"t2\" class=\"standard\">"); String desc = bitstreams[k].getDescription(); out.print((desc != null) ? desc : ""); } out .print("</td><td headers=\"t3\" class=\"standard\">"); out.print(UIUtil.formatFileSize(bitstreams[k].getSize())); out .print("</td><td headers=\"t4\" class=\"standard\">"); out.print(bitstreams[k].getFormatDescription()); out .print("</td><td class=\"standard\" align=\"center\">"); // is there a thumbnail bundle? if ((thumbs.length > 0) && showThumbs) { String tName = bitstreams[k].getName() + ".jpg"; String tAltText = LocaleSupport.getLocalizedMessage(pageContext, "org.dspace.app.webui.jsptag.ItemTag.thumbnail"); Bitstream tb = thumbs[0] . getBitstreamByName(tName); if (tb != null) { String myPath = request.getContextPath() + "/retrieve/" + tb.getID() + "/" + UIUtil.encodeBitstreamName(tb .getName(), Constants.DEFAULT_ENCODING); out.print(bsLink); out.print("<img src=\"" + myPath + "\" "); out.print("alt=\"" + tAltText + "\" /></a><br />"); } } out .print(bsLink + LocaleSupport .getLocalizedMessage( pageContext, "org.dspace.app.webui.jsptag.ItemTag.view") + "</a></td></tr>");
然後修改成以下程式碼,注意標註For Bitstream Display的部份:
// Work out what the bitstream link should be // (persistent // ID if item has Handle) String bsLink = "<a target=\"_blank\" href=\"" + request.getContextPath(); //For Bitstream Display String bdLink = request.getContextPath(); if ((handle != null) && (bitstreams[k].getSequenceID() > 0)) { bsLink = bsLink + "/bitstream/" + item.getHandle() + "/" + bitstreams[k].getSequenceID() + "/"; //For Bitstream Display bdLink = bdLink + "/bitstream/" + item.getHandle() + "/" + bitstreams[k].getSequenceID() + "/"; } else { bsLink = bsLink + "/retrieve/" + bitstreams[k].getID() + "/"; //For Bitstream Display bdLink = bdLink + "/retrieve/" + bitstreams[k].getID() + "/"; } bsLink = bsLink + UIUtil.encodeBitstreamName(bitstreams[k] .getName(), Constants.DEFAULT_ENCODING) + "\">"; //For Bitstream Display bdLink = bdLink + UIUtil.encodeBitstreamName(bitstreams[k] .getName(), Constants.DEFAULT_ENCODING); out.print("<tr><td headers=\"t1\" class=\"standard\">"); //out.print(bsLink); //out.print(bitstreams[k].getName()); //out.print("</a>"); //For Bitstream Display BitstreamDisplay db = new BitstreamDisplay(item, bdLink); out.print(db.doDialog(bitstreams[k].getName())); if (multiFile) { out .print("</td><td headers=\"t2\" class=\"standard\">"); String desc = bitstreams[k].getDescription(); out.print((desc != null) ? desc : ""); } out .print("</td><td headers=\"t3\" class=\"standard\">"); out.print(UIUtil.formatFileSize(bitstreams[k].getSize())); out .print("</td><td headers=\"t4\" class=\"standard\">"); out.print(bitstreams[k].getFormatDescription()); out.print("</td><td class=\"standard\" align=\"center\">"); // is there a thumbnail bundle? if ((thumbs.length > 0) && showThumbs) { String tName = bitstreams[k].getName() + ".jpg"; String tAltText = LocaleSupport.getLocalizedMessage(pageContext, "org.dspace.app.webui.jsptag.ItemTag.thumbnail"); Bitstream tb = thumbs[0] . getBitstreamByName(tName); if (tb != null) { String myPath = request.getContextPath() + "/retrieve/" + tb.getID() + "/" + UIUtil.encodeBitstreamName(tb .getName(), Constants.DEFAULT_ENCODING); //out.print(bsLink); //out.print("<img src=\"" + myPath + "\" "); //out.print("alt=\"" + tAltText // + "\" /></a>"); //For Bitstream Display String thumbnailImg = "<img src=\"" + myPath + "\" alt=\"" + tAltText + "\" />"; out.print(db.doDialog(thumbnailImg)); out.print("<br />"); } } //out.print(bsLink // + LocaleSupport.getLocalizedMessage(pageContext,"org.dspace.app.webui.jsptag.ItemTag.view") // + "</a>"); //For Bitstream Display out.print(db.doDialog(LocaleSupport.getLocalizedMessage( pageContext, "org.dspace.app.webui.jsptag.ItemTag.view"))); out.print("</td></tr>");
DSpace調整style.css.jsp
位置在[dspace-source]/dspace-jspui/dspace-jspui-webapp/src/main/webapp/style.css.jsp
請新增一段程式碼,以讓Bitstream的列表置中:
table.miscTable, table.attentionTable { margin: auto; }
效果圖片如下:
DSpace修改dspace.cfg設定
位置在[dspace]/config/dspace.cfg
最後,要加入設定,Media Filter才能生效。預設的Media Filter部份設定如下:
#### Media Filter / Format Filter plugins (through PluginManager) #### # Media/Format Filters help to full-text index content or # perform automated format conversions #Names of the enabled MediaFilter or FormatFilter plugins filter.plugins = PDF Text Extractor, HTML Text Extractor, \ Word Text Extractor, JPEG Thumbnail # [To enable Branded Preview]: remove last line above, and uncomment 2 lines below # Word Text Extractor, JPEG Thumbnail, \ # Branded Preview JPEG #Assign 'human-understandable' names to each filter plugin.named.org.dspace.app.mediafilter.FormatFilter = \ org.dspace.app.mediafilter.PDFFilter = PDF Text Extractor, \ org.dspace.app.mediafilter.HTMLFilter = HTML Text Extractor, \ org.dspace.app.mediafilter.WordFilter = Word Text Extractor, \ org.dspace.app.mediafilter.JPEGFilter = JPEG Thumbnail, \ org.dspace.app.mediafilter.BrandedPreviewJPEGFilter = Branded Preview JPEG #Configure each filter's input format(s) filter.org.dspace.app.mediafilter.PDFFilter.inputFormats = Adobe PDF filter.org.dspace.app.mediafilter.HTMLFilter.inputFormats = HTML, Text filter.org.dspace.app.mediafilter.WordFilter.inputFormats = Microsoft Word filter.org.dspace.app.mediafilter.JPEGFilter.inputFormats = BMP, GIF, JPEG, image/png filter.org.dspace.app.mediafilter.BrandedPreviewJPEGFilter.inputFormats = BMP, GIF, JPEG, image/png
請修改成以下設定:
#### Media Filter / Format Filter plugins (through PluginManager) #### # Media/Format Filters help to full-text index content or # perform automated format conversions #Names of the enabled MediaFilter or FormatFilter plugins filter.plugins = PDF Text Extractor, HTML Text Extractor, \ Word Text Extractor, JPEG Thumbnail, \ FFmpeg Image Capturer, MEncoder Image Capturer, \ FFmpeg Video Converter, MEncoder Video Converter, \ Zoomify Image Converter, FFmpeg Audio Converter, \ ImageMagick Converter, OOg Text Converter, OOg PPT Converter, OOg PDF Converter # [To enable Branded Preview]: remove last line above, and uncomment 2 lines below # Word Text Extractor, JPEG Thumbnail, \ # Branded Preview JPEG #Assign 'human-understandable' names to each filter plugin.named.org.dspace.app.mediafilter.FormatFilter = \ org.dspace.app.mediafilter.FFmpegVideoFilter = FFmpeg Video Converter, \ org.dspace.app.mediafilter.FFmpegImgFilter = FFmpeg Image Capturer, \ org.dspace.app.mediafilter.MEncoderFilter = MEncoder Video Converter, \ org.dspace.app.mediafilter.MEncImgFilter = MEncoder Image Capturer, \ org.dspace.app.mediafilter.ZoomifyFilter = Zoomify Image Converter, \ org.dspace.app.mediafilter.FFmpegAudioFilter = FFmpeg Audio Converter, \ org.dspace.app.mediafilter.PDFFilter = PDF Text Extractor, \ org.dspace.app.mediafilter.HTMLFilter = HTML Text Extractor, \ org.dspace.app.mediafilter.WordFilter = Word Text Extractor, \ org.dspace.app.mediafilter.JPEGFilter = JPEG Thumbnail, \ org.dspace.app.mediafilter.BrandedPreviewJPEGFilter = Branded Preview JPEG, \ org.dspace.app.mediafilter.ImageMagickFilter = ImageMagick Converter, \ org.dspace.app.mediafilter.OOgPDFFilter = OOg PDF Converter, \ org.dspace.app.mediafilter.OOgTextFilter = OOg Text Converter, \ org.dspace.app.mediafilter.OOgPPTFilter = OOg PPT Converter #Configure each filter's input format(s) filter.org.dspace.app.mediafilter.PDFFilter.inputFormats = Adobe PDF filter.org.dspace.app.mediafilter.HTMLFilter.inputFormats = HTML, Text filter.org.dspace.app.mediafilter.WordFilter.inputFormats = Microsoft Word filter.org.dspace.app.mediafilter.JPEGFilter.inputFormats = BMP, GIF, JPEG, image/png filter.org.dspace.app.mediafilter.BrandedPreviewJPEGFilter.inputFormats = BMP, GIF, JPEG, image/png filter.org.dspace.app.mediafilter.FFmpegVideoFilter.inputFormats = MP4, MPEG, AVI, FLV, WMV filter.org.dspace.app.mediafilter.FFmpegImgFilter.inputFormats = MP4, MPEG, AVI, FLV, WMV filter.org.dspace.app.mediafilter.MEncoderFilter.inputFormats = RM, RMVB, video/3gpp, Video Quicktime filter.org.dspace.app.mediafilter.MEncImgFilter.inputFormats = RM, RMVB, video/3gpp, Video Quicktime filter.org.dspace.app.mediafilter.ZoomifyFilter.inputFormats = BMP, GIF, JPEG, image/png, TIFF filter.org.dspace.app.mediafilter.FFmpegAudioFilter.inputFormats = MP3, AAC, FLAC, OGG, WMA, WAV, M4A filter.org.dspace.app.mediafilter.ImageMagickFilter.inputFormats = TIFF filter.org.dspace.app.mediafilter.OOgPDFFilter.inputFormats = Microsoft Powerpoint, OpenDocument Presentation, RTF, OpenDocument Spreadsheet, Calc 6.0 spreadsheets, CSV, TSV, Impress 6.0 presentations, Microsoft Word, OpenDocument Text, Writer 6.0 documents filter.org.dspace.app.mediafilter.OOgTextFilter.inputFormats = Microsoft Powerpoint, OpenDocument Presentation, RTF, OpenDocument Spreadsheet, Calc 6.0 spreadsheets, CSV, TSV, Impress 6.0 presentations, OpenDocument Text, Writer 6.0 documents filter.org.dspace.app.mediafilter.OOgPPTFilter.inputFormats = Microsoft Powerpoint, Impress 6.0 presentations, OpenDocument Presentation # Where is Temp Directory? filter.tempfile.config = /tmp/ # How to excute FFmpeg? filter.exec.ffmpeg = ffmpeg # FFmpeg Config filter.FFmpegVideoFilter.config = -ar 22050 -ab 56 -f flv -y -s 320x240 filter.FFmpegImgFilter.config = -y -f image2 -ss 8 -t 0.001 -s 80x60 filter.FFmpegAudioFilter.config = -ar 22050 -y # How to excute MEncoder? filter.exec.mencoder = mencoder # MEncoder Config filter.MEncoderFilter.config = -vf scale=320:240 -ffourcc FLV1 -of lavf -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -ovc lavc -lavcopts vcodec=flv:vbitrate=200 -srate 22050 -oac lavc -lavcopts acodec=mp3:abitrate=56 # How to excute Python? filter.exec.python = python # Where is ZoomifyFileProcessor.py ? filter.exec.zoomifyImage = /opt/ZoomifyImage/ZoomifyFileProcessor.py # How to excute ImageMagick? filter.exec.imagemagick = convert
簡單說明一下各設定檔的用處:
- filter.plugins:要採用哪些filter,輸入他們的名稱。
- plugin.named.org.dspace.app.mediafilter.FormatFilter:設定各個filter的名稱。
- filter.org.dspace.app.mediafilter.*******.inputFormats:設定該filter處理的檔案類型,名稱是Bitstream Format當中的「名稱」,所以上面才要先設定Bitstream Format。
- 以下都是各個filter的設定參數,可以做進一步的微調。如果你要在Windows環境底下執行的話,這些參數可能需要重新調整。
DSpace重新編譯
步驟如下,注意[tomcat]、[dspace-source]跟[dspace]要替換成你Tomcat的位置、原始碼跟安裝目的地的位置:
- cd [dspace-source]/dspace/
- mvn package
- cd [dspace-source]/dspace/target/dspace-1.5.0-build.dir/
- ant -Dconfig=[dspace]/config/dspace.cfg update
- \cp -rf [dspace]/webapps/* [tomcat]/webapps/
- [tomcat]/bin/shutdown.sh
- [tomcat]/bin/startup.sh
DSpace執行filter-media
請執行以下指令:
[root@dspace ~]# [dspace]/bin/filter-media -v
加入-v指令,程式就會顯示他處理的詳細過程,也可以看到剛剛新增的MediaFilter有沒有正確地被採用,如下圖:
如果有完成的話,就可以找一個有Bitstream的Item頁面看看這些功能有沒有出來囉。
因為MediaFilter結合了許多工具,儘管我已經盡量把安裝動作簡化了,但還是很繁雜,如果哪裡有出錯,請務必通知我。下一篇則是給進階者的BitstreamDisplay使用篇,讓你更進一步地去調整display-item或其他的版面。<-- Post Catalog -->
好一陣子沒來,你這邊因為噗浪而真的只有長篇研究成果了...←開完的那一剎那間臉變成=口=|||而且有看到教科書而很想關視窗的慾望
回覆刪除主頁右邊那些開的很不快。好像因為在讀取我家IE呆掉了一下,20秒吧
選這篇留言單純是因為是第一篇0.0Y
開啟這篇後出現了4.5個錯誤警告,好像是你網頁的問題;但因為都是英文+手按太快,不記得內容了(茶)
你今年要畢業?
哇哈哈,這些文章都不是給普通人看的,算是技術文件。
回覆刪除我大部分閒聊都會在Plurk上,要找我聊天的話上Plurk比較快。
http://www.plurk.com/pulipuli/invite
當然,這邊也還是會看就是了。
右邊側欄列因為加了一些奇怪的功能,而且我故意讓他分段延遲讀取,不然一起讀取的話也都會當在那邊。Firefox或Google瀏覽器開起來就比較順了,大概吧?
應該明年才會畢業,詳情可以看「延畢確定」這篇
http://pulipuli.blogspot.com/2009/05/blog-post.html
耶...對耶,延畢確定被專業技術文件淹沒我居然沒看到他0.0a
回覆刪除(拍)雖然覺的你工作不會很難找,但大環境景氣不佳,你多呆2年做自己想(?)做的事也不錯啦...(總覺的你那篇文有點怨氣了XD)
錯誤警告這次有數,共13個;內容非屬中國方塊字,大腦資料庫當機(茶)
本小姐現在一週才玩電腦2.3天,噗浪對我來說有點像大量過期簡訊,不喜歡。紅起來的基礎建立在長時間使用電腦/3不5時拿手機上網的人吧。小眾?大眾?同好型?
台中31度,熱到想砍人= =+
網頁錯誤我想應該是Google Analytic的錯吧,那東西實在很複雜,別管他了。
回覆刪除我這邊冷氣很冷,伺服器很吵,歡迎奶奶下次來政大爬山找我
您好
回覆刪除mediafilter-dspace-api.zip這檔內
OOgPDFEncFilter.java
OOgPDFFilter.java
兩個檔內容似乎一樣
編譯時過不去
謝謝
您好,我要安裝mediafilter時,也遇到mediafilter-dspace-api.zip 裡OOgPDFEncFilter.java
回覆刪除OOgPDFFilter.java
兩個檔案是一樣的問題耶,不知道布丁大大可以幫忙補上嗎?
謝謝
彩塵砂留
OOgPDFEncFilter.java
回覆刪除是多餘的,請幫我自動刪掉吧QQ
您好
回覆刪除我安裝完之後
進入item頁後出現空白
在tomcat裡面出現了的錯誤訊息
似乎是BitstreamDisplay.java 150行
轉int的時候出現問題
不曉得是不是bug
謝謝
java.lang.NumberFormatException: For input string: "28223/1/M9430773200501.pdf"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:456)
at java.lang.Integer.parseInt(Integer.java:497)
at org.dspace.app.webui.util.BitstreamDisplay.setBitstream(BitstreamDisplay.java:150)
at
另外 系統傳入setBitstream的字串為
回覆刪除/bitstream/2377/3680/1/ce07ics002006000218.pdf
可能是跟您原先設想當字串不一樣
是的,跟預想的不一樣,應該說本來是不會有這種檔案名稱的吧?
回覆刪除我預想的是要輸入「/jspui/bitstream/2377/3680/1/ce07ics002006000218.pdf」或是「/jspui/retrieve/12」這種字串,是不是少了以下這段?
//For Bitstream Display
String bdLink = request.getContextPath();
我在程式路徑的地方都加上/jspui/就可以了
回覆刪除我想原因應該是我們的tomcat在路徑那邊有做設定的關係 我們把jspui那個資料夾隱藏了才導致這個問題吧
現在可以用了
不過另外發現了一個bug
點選了一個影片撥放後之後
到另一個item看影片時會出不來
這應該是只有在IE上有的問題
目前試在Opera是正常的
加上這個介面真的不錯
感謝
你的建議讓我發現到這隻程式的缺點,感謝你,現在就來修改!
回覆刪除您好
回覆刪除我發現開啟PDF檔案時第一次可以正常開啟
關掉再去開啟另一個PDF時會出現錯誤的情況
這也是只有IE會發生
謝謝
嗯……IE6在這種時候總是會呈現不可思議的怪現象。
回覆刪除我再研究看看好了,感謝!
你好
回覆刪除IE開影片的問題我找到解決方法了
參考
http://www.mail-archive.com/swfobject@googlegroups.com/msg00560.html
http://www.javaworld.com.tw/jute/post/view?bid=6&id=37434&sty=0
第一步
在BitstreamDisplay.java檔的doVideoPlayer中player_flv_maxi.swf後面加上?r="+new java.util.Date().getTime()+"
這樣做可以解決開完a影片再開b影片的問題
但是如果之前開過a影片之後再開a影片的話的話IE會用cache裡的資料會還是開不起來 要再按F5
所以第二步在layout/header-default.jsp這個檔中head部分加上
第二個連結提供的方法 就可以避免這個問題了
樓上大大真是太強了,請受我一拜 <(_ _)>
回覆刪除如果你發現在作soffice的轉換得時候出現以下問題:
回覆刪除Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FilenameUtils
at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.guessDocumentFormat(AbstractOpenOfficeDocumentConverter.java:118)
at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:93)
at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:74)
at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:70)
at org.dspace.app.mediafilter.MediaFilterUtils.JODConvert(MediaFilterUtils.java:665)
at org.dspace.app.mediafilter.MediaFilterUtils.JODConvert(MediaFilterUtils.java:637)
at org.dspace.app.mediafilter.MediaFilterUtils.Doc2PDF(MediaFilterUtils.java:576)
at org.dspace.app.mediafilter.Doc2SWF.getDestinationStream(Doc2SWF.java:61)
at org.dspace.app.mediafilter.MediaFilterManager.processBitstream(MediaFilterManager.java:652)
at org.dspace.app.mediafilter.MediaFilterManager.filterBitstream(MediaFilterManager.java:554)
at org.dspace.app.mediafilter.MediaFilterManager.filterItem(MediaFilterManager.java:504)
at org.dspace.app.mediafilter.MediaFilterManager.applyFiltersItem(MediaFilterManager.java:472)
at org.dspace.app.mediafilter.MediaFilterManager.main(MediaFilterManager.java:379)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FilenameUtils
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 13 more
表示缺少了FilenameUtils.class
這通常是在commons-io-1.4.jar裡面,[dspace]/lib/就可以找到
請把他複製到/usr/java/jdk1.6.0_06/jre/lib/ext/底下(如果你不是安裝jdk1.6.0_06,那麼請自行替換路徑)
這樣就可以了
另外,我發現到執行soffice的時候沒有回傳訊息似乎是正常的!
回覆刪除[root@dspace ~]# /usr/lib/openoffice.org2.0/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
就算下面沒有訊息,實際上JODconverter還是可以正常運作
如果你發現你在轉換需要使用到OpenOffcie來用的Word、Excel、PowerPoint時也遇到了以下問題的話,解決方法是到套件管理員搜尋openoffice,找到包含「unoconv」套件在內的所有檔案都打勾安裝,就可以順利運作了。
回覆刪除沒有安裝之前,會發生錯誤訊息如下:
2009/7/28 下午 11:30:30 com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection connect
資訊: connected
2009/7/28 下午 11:30:32 com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection disposing
資訊: disconnected
Exception in thread "main" com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException: conversion failed: could not load input document
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:131)
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.convertInternal(OpenOfficeDocumentConverter.java:120)
at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:104)
at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:74)
at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:70)
at com.artofsolving.jodconverter.cli.ConvertDocument.convertOne(ConvertDocument.java:154)
at com.artofsolving.jodconverter.cli.ConvertDocument.main(ConvertDocument.java:133)
Caused by: com.sun.star.uno.RuntimeException: exception type not found: bad_allocpure virtual method called
N10__cxxabiv121__vmi_class_type_infoEN10__cxxabiv120__si_class_type_infoEN10__cxxabiv117__class_type_infoESt10bad_typeidSt8bad_castSt9type_infoN10__cxxabiv129__pointer_to_member_type_infoEN10__cxxabiv119__pointer_type_infoEN10__cxxabiv117__pbase_type_infoEN10__cxxabiv116__enum_type_infoEN10__cxxabiv120__function_type_infoEN10__cxxabiv117__array_type_infoEN10__cxxabiv123__fundamental_type_info
at com.sun.star.lib.uno.environments.remote.Job.remoteUnoRequestRaisedException(Job.java:182)
at com.sun.star.lib.uno.environments.remote.Job.execute(Job.java:148)
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:344)
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:313)
at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:101)
at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:652)
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:154)
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:136)
at $Proxy5.loadComponentFromURL(Unknown Source)
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadDocument(OpenOfficeDocumentConverter.java:150)
at com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:127)
... 6 more
為了讓他們解壓縮的時候擁有完整的影片編碼/解碼(codec)程式,還需要另外安裝codec包
回覆刪除請到http://www.mplayerhq.hu/design7/dload.html下載Binary Codec Packages
以我使用的Linux是x86版本來說,下載連結是:http://www.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2
備份檔案:http://cid-7113c88187767b01.skydrive.live.com/self.aspx/%e5%85%ac%e9%96%8b/dspace/20090808-mencoder-codec/essential-20071007.tar.bz2
請解壓縮之後,放到/usr/lib/codecs資料夾當中即可
mencoder似乎有點問題,刪除mencoder的方法是「killall -9 mencoder」
回覆刪除此外,soffice也沒辦法開機自動啟動,還需要另外找方法
You were not mistaken, truly
回覆刪除Thank you.
回覆刪除To 彩塵砂:
回覆刪除補檔:DSpace擴增MediaFilter格式(安裝篇)
http://pulipuli.blogspot.tw/2009/05/dspacemediafilter_19.html
mediafilter-dspace-api.zip http://flashmirrors.com/files/0bbzkjvwala6qin/mediafilter-dspace-api.zip
[dspace-source]/dspace-api/src/main/java/org/dspace/app/mediafilter/
BitstreamDisplay.zip http://flashmirrors.com/files/xtdifem6zcpkoh1/BitstreamDisplay.zip
[dspace-source]/dspace-jspui/dspace-jspui-api/src/main?java/org/dspace/app/webui/util/
RetrieveZIPServlet.zip http://flashmirrors.com/files/6yhcgs81suaxqrm/RetrieveZIPServlet.zip
[dspace-source]/dspace-jspui/dspace-jspui-api/src/main/java/org/dspace/app/webui/servlet/
extension-jspui.zip http://flashmirrors.com/files/1knqf7npaxfegei/extension.zip
[dspace-source]/dspace-jspui/dspace-jspui-webapp/src/main/webapp/extension/
※預設是沒有extension這個資料夾的,請自行建立。
不好意思,請加油。
布丁大,我執行 filter-media 轉500多mb 的mpg 有成功,
回覆刪除但轉1g多的,就會當住。 不曉得是不是有參數可以調整?
我有想說自己先用個人電腦轉成flv,然後再把flv檔放上去,
可惜dspace的實體檔案結構總是123456789/72/32 等等。
不曉得該怎麼從後端來換, 可以請教一下嗎?
To 彩塵砂,
回覆刪除我真沒想到會有人拿來轉大檔案 OTL
建議影片分段。
沒辦法轉的問題,要先檢查FFmpeg跟Encoder在系統上有沒有辦法處理
因為主要負責轉檔的是這兩個工具,DSpace只是負責儲存而已
它的轉換並不是單純影片轉影片而已,它還包括擷圖、保存原本影片、轉換成播放用的影片等等多個步驟。
123456789/72/32
是bitstream的internal_id對應到的目錄結構
所以這個bitstream的internal_id為1234567897232
作者已經移除這則留言。
回覆刪除布丁大,
回覆刪除我有買了您 DSPACE-DLLL 的專書,但DSPACE.CFG 裡面有關 mediafilter 的部份,
想向您請教,因為我上傳了PDF文件,經由FILTER 之後,雖然可以產生預覽。
但上裡面的中文字都不見了,只剩下表格的框框。
我有想說若不行用的話,那就不要預覽了,直接下載或開啟PDF檔也是可以的,
但不知道該如何修改,墾請大大指教了。 謝謝!!
另外想問一下,我原先照您的網頁實作,是可以預覽顯示PDF內容的,但依照DSPACE-DLLL來做時,點擊pdf檔時,卻會呼叫 zoomify 來開啟pdf ,導致裡面的中文字無法顯示,是不是我那個地方設錯了呢? 謝謝!!
回覆刪除To 施勝忠,
回覆刪除1. 這個網頁的教學是2009年,書本是2014年(雖然系統是2010年左右做完的),書本的DSpace-DLLL已經採用了不同的方式處理了
2. 中文字出不來的情況很多,舉例包括:
a. PDF根本就沒有中文字,只是由多張圖片組成,這很常見
b. PDF裡面根本就不是中文字,OCR失敗,這也很常見
c. OpenOffice當機了,沒有重開機
d. OpenOffice當機了,因為記憶體不足,不能轉換PDF
不管是那個問題,拿出PDF檔案來給大家檢查一下再說吧。