2013-08-03 2 views
4

Что мне нужно сделать, это сжать 64KB куски файла, поскольку они поступают из внешней службы, а затем передать этот фрагмент сжатых данных в браузер в реальном времени. Xceed Real-Time довольно потрясающе в том, как вы можете установить заголовок файла, а затем собрать вместе несколько фрагментов размером 64 КБ в целый файл на клипсе. Это отлично работает, и вы можете легко обрабатывать несколько файлов, помещая их в цикл.Есть ли какие-либо бесплатные утилиты сжатия, которые могут быть зашифрованы в реальном времени, например, Xceed Real-Time Zip?

Мой вопрос заключается в следующем: есть ли бесплатная альтернативная утилита для сжатия, которая может соответствовать сложности Xceed? Мне нужно что-то, что может сжимать и передавать части файла в браузер. Практически все бесплатные альтернативы, которые я видел, требуют наличия доступа ко всему файлу (файлам) до того, как может произойти сжатие. Xceed отлично, но это дорого. Просто интересно, есть ли бесплатная альтернатива, которая может это сделать. Благодаря!

ответ

6

Что вы ищете - это метод сжатия потока. Хорошая новость - у вас довольно много вариантов. Также обратите внимание, что вам нужно подумать о памяти, потому что для некоторых решений (на основе словарей) может потребоваться много памяти, поэтому проверьте и настройте.

Чтобы ответить на короткий вопрос, я предлагаю попробовать LZ4.

LZ4 - http://code.google.com/p/lz4/

LZ4 очень быстрый алгоритм сжатия без потерь, обеспечивая скорость сжатия со скоростью 300 Мб/с на ядро, масштабируемых с мульти-ядер процессора. Он также оснащен чрезвычайно быстрым декодером со скоростью в ГБ/с на ядро ​​ , обычно достигающим пределов скорости RAM для многоядерных систем.

Benchmark:

Name   Ratio C.speed D.speed 
         MB/s MB/s 
LZ4 (r97)  2.084 410 1810 
LZO 2.06  2.106 409  600 
QuickLZ 1.5.1b6 2.237 373  420 
Snappy 1.1.0 2.091 323 1070 
LZF    2.077 270  570 
zlib 1.2.8 -1 2.730  65  280 
LZ4 HC (r97) 2.720  25 2040 
zlib 1.2.8 -6 3.099  21  300 

Есть много реализаций доступны, пожалуйста, проверьте: http://code.google.com/p/lz4/

LZO - http://lzo-net.sourceforge.net/

LZO.Net приносит силу Markus большой LZO библиотеки "FXJ" Oberhumer в сжатии (v1.08) в .Net. Он переносит доступ к исходной DLL-библиотеке с небольшим классом C#, поддерживающим необработанную скорость библиотеки ANSI-C .

Snappy - https://code.google.com/p/snappy/

Snappy представляет собой библиотеку сжатия/декомпрессии. Он не нацелен на максимальное сжатие или совместимость с любой другой компрессией ; вместо этого он предназначен для очень высоких скоростей и разумного сжатия .

Два C# нативные реализации доступны:

QuickLZ - http://www.quicklz.com/

QuickLZ - это самая быстрая библиотека сжатия в мире, достигающая 308 Мбайт/с на ядро. Он может использоваться по коммерческой лицензии, если такой был приобретен или под GPL 1, 2 или 3, где все, выпущенные в , должно быть открытым.

Native реализации - QuickLZ C#

So far, only a subset of the library has been ported, 
namely the setting: 

QLZ_COMPRESSION_LEVEL = 1 or 3 
QLZ_STREAMING_BUFFER = 0 
QLZ_MEMORY_SAFE = 0 
+0

Мне нужна реализация библиотеки C#. У вас есть пример того, как я могу использовать FastLZ для создания заголовков для файлов на лету, а затем пометить остальные части этого заголовка? Xceed имеет встроенную функциональность. Спасибо! – TheDude

+1

Я обновил ответ. Я удалил FastLZ, так как он вам не подходит. Таким образом, у вас есть 4 варианта: LZ4, LZO, Snappy, QuickLZ (вершина эталона). LZO - обертка. У реализации QuickLZ C# есть некоторые ограничения. В любом случае, вы можете пойти с LZ4 или Snappy. –

+0

Может ли LZ4 распаковать сжатые файлы? – zer0ne

1

Заканчивать SharpCompress, написанные специально для целей, как ваша. Я использую его и отлично работаю для своего решения. Мы использовали Xceed перед нашей перезаписью.

http://sharpcompress.codeplex.com/

SharpCompress библиотека сжатия для .NET/Mono/Silverlight/WP7, который может распаковывать, un7zip, распаковать, распакуйте unbzip2 и ungzip с вперед только чтение и файл случайных API, доступа. Реализована поддержка записи zip/tar/bzip2/gzip.

Основная особенность - поддержка потоков, недоступных для поиска, поэтому большие файлы могут обрабатываться «на лету» (т. Е. Поток загрузки).

+0

Есть ли у вас пример использования SharpCompress для сжатия фрагментов в 64 КБ в режиме реального времени? С Xceed есть встроенные функции для создания заголовка для каждого файла, а затем фрагменты размером 64 КБ помечены этим заголовком файла. Имеет ли SharpCompress аналогичную функциональность? Приятно оценить пример! – TheDude

 Смежные вопросы

  • Нет связанных вопросов^_^