2012-08-13 68 views
1

我正在使用flex 4開發移動應用程序,用於服務器通信我正在使用java Web服務。其實我需要將文件從服務器傳輸到移動和移動到服務器。當我做這個操作時,我的應用程序變得非常慢。所以我打算壓縮文件併發送。但是當我使用GZIPOutputStreamZIPOutputStream進行壓縮時,它只是將文件壓縮爲.zip。無法減少很多文件大小。但我需要儘可能減小文件大小。文件格式可以是圖像,視頻或音頻。請有人提出一些想法來使用java來做這個操作。使用java減少文件大小和使用低一樣多

+2

圖像,視頻和音頻文件可能已被壓縮。 – 2012-08-13 07:45:16

+4

現代多媒體格式已經被壓縮得非常好 - 你可能無法通過額外的壓縮來減小尺寸。您可以嘗試以較小的分辨率/比特率或類似的方式對它們進行即時重新編碼。此外,你是否確定文件大小是導致你的應用程序放緩?如果你的應用程序寫得很好,它應該能夠處理大文件。 – 2012-08-13 07:45:32

+0

順便說一句,您可以嘗試將輸出流的壓縮級別設置爲9(可用的最高壓縮率),但它可能不會改變任何內容......嘗試使用首選zip管理器壓縮文件並檢查文件是否實際壓縮。最後,小心CPU的開銷。壓縮使用了大量的CPU,並且您可能會在服務器端遇到其他問題。 – poussma 2012-08-13 07:55:52

回答

1

您要求我們提出一些建議。好,。我認爲當您通過Web Services傳輸數據時,您必須將數據轉換爲字節數組。我想,你會收到整個字節並轉換爲一個文件,然後編碼/解碼。所以當您嘗試對某些圖像或視頻文件進行編碼時,無法縮小文件大小。所以在這裏我的想法是,使用Base64Encoding和Base64Decoding可以更好地編碼數據。意思是,將文件轉換爲字節,對字節進行編碼併發送,然後接收字節並解碼,然後轉換爲文件。我認爲這應該對你有所幫助。

+0

你能告訴我如何做到這一點。我對這類應用程序很陌生。 – praba 2012-08-27 02:55:26

+1

你必須谷歌它。有許多編碼/解碼算法可用。更好的選擇是Base64Encoder/Base64Decoder。 – 2012-08-27 02:58:47

2

大多數音頻,視頻和圖像格式已經被壓縮,因此在傳輸之前再次壓縮內容並不會有多大幫助。另外,壓縮可能是cpu密集型的,所以你可能會增加這個問題。

客戶端或服務器是否變慢? 我建議你在慢速運行的應用程序上運行CPU分析器以查明發生了什麼。

看一看http://netbeans.org/kb/docs/java/profiler-intro.html