LINUX.ORG.RU
ФорумTalks

А есть ли архиватор с малюсенькой (настройкой выходного размера) компрессией?

 , , ,


0

1

По мотивам фильмов, которые могут уместиться на DVD, где нужно указать нужный размер при конвертировании видеофайла.

Что нужно в моём случае:

Есть файл, который отлично жмётся (образ диска для PS1 с PS error correction codes). Размер его, скажем, 712 мбайт.

Нужно записать на болванку, но в виде файла, а не образа диска, для считывания эмулятором. Проблема в том, что размер CD - 700 Мбайт, записывание инфы свыше - это Overburn. Может сработать, а может и не сработать.

Окей, можно сжать файл образа CHD, PBP. Выходной файл получается, скажем, метров 400.

Но это не очень хорошо - эмулятор при воспроизведении сжатого файла эмулятор иногда заикается и подлагивает. Может это связано с скоростью компакт-диска. При воспроизведении несжатого файла такой проблемы нет.

А вот если применить частичное сжатие, можно уменьшить размер как нужно. Ну и по идее, чтоб архив можно было нормально монтировать и воспроизводить файл образа с него.

gzip/bzip2/xz/zip -{1..9}
7zip -mx{0..9}
rar -m{0..5}


Ну и выбирай что тебе больше подойдет

Kolins ★★★★
()
Ответ на: комментарий от Anoxemian

Архиваторы часто имеют степень сжатия «без сжатия», и даже в одном архиве можно скомбинировать несколько файлов с разной степенью сжатия. А тут была бы полезна команда, чтоб сжать, скажем, последние 30 мбайт.

DanilaZabiakaa
() автор топика
Ответ на: комментарий от DanilaZabiakaa

чтоб сжать, скажем, последние 30 мбайт

И чтобы потом тот, кто будет это расжимать, понял, что там сжато именно последние 30 Мбайт.

ИМХО попробуй поиграться со степенью сжатия у архиваторов просто. На как-то минимальной должно получиться примерно то, что ты хочешь.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Если открыть файл образа, то видно, что часть забита нулями. Небольшая проблема в том, что архиваторы (из моего опыта) дают возможность в виде «цифр» задавать уровень компрессии, а не настраивать алгоритм. Типа, самый примитивный алгоритм сжатия, когда сжимаешь только массово всречающиеся нули, или «размер словаря» на несколько байт сделать :D.

DanilaZabiakaa
() автор топика
Ответ на: комментарий от firkax

Если у него лагает распаковка, то от степени сжатия её скорость вроде не особо зависит.

Похоже, лагает где-то на стороне лазерной головки. С НЖМД сжатый образ воспроизводится нормально, записанный на диск несжатый образ тоже, сжатый - тут встречаются проблемы.

DanilaZabiakaa
() автор топика
Ответ на: комментарий от firkax

Немного зависит, насколько я помню. Я как-то упаковывал в 7z данные расчетов в ANSYS или CFD: они очень круто жмутся, все 30 гигов результата сжимаются до архива в 7 гигов примерно. Понятно, что пакуется оно в разы дольше на максимальном уровне сжатия, но и распаковывалось вроде тоже дольше, чем если просто «без сжатия» поставить.

Но я особо не экспериментировал со временем, так что не буду утверждать.

Zhbert ★★★★★
()
Ответ на: комментарий от DanilaZabiakaa

Там скорее всего просто в скорость чтения с диска упирается. Она вроде не такая уж большая. А для распаковки ему надо на просто прочитать часть файла, но еще и потом ее обработать. Вот в этом месте и подлагивает.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Не очень знаю, как архивы устроены, но в принципе, если указать размер словаря в несколько байт, а желательно подсунуть кастомный словарь, где прописано только сжатие нулей или определённой последовательности байт, размер уменьшится в пустотах, overburn не потребуется, данные в целом останутся такими же.

Только пока найти, как подсунуть архиватору кастомный словарь, не получилось -_-.

DanilaZabiakaa
() автор топика
Ответ на: комментарий от DanilaZabiakaa

как подсунуть архиватору кастомный словарь

у brotli вроде есть

-D FILE, --dictionary=FILE  use FILE as raw (LZ77) dictionary
но я не понял как им пользоваться.

Toxo2 ★★★★
()
Ответ на: комментарий от Zhbert

«Без сжатия» это не распаковка а копирование. А вот между разными степенями сжатия уже разницы почти не будет.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Вот поэтому я и обратил внимание, что могу ошибаться :)

Zhbert ★★★★★
()
Ответ на: комментарий от DanilaZabiakaa

А тут была бы полезна команда, чтоб сжать, скажем, последние 30 мбайт.

Нет никакого обоснования, что последние 30 мбайт менее информативны и полезны, чем любые другие 30 мбайт. А вдруг там самое важное, а ты его сжал и потерял?
Поэтому лучше сначала применить H.264/CABAC © для энтропийного кодирования с последующим сжатием стандартным архиватором.

quickquest ★★★★★
()

Учти что тебе вероятнее всего нужен именно блочный алгоритм сжатия(если конечно у тебя архив полностью не распаковывается в память/диск перед чтением) и чем меньше блок тем лучше.

Если возьмешь потоковый алгоритм и понадобится кусок файла из конца то он будет все от начала и до этого конца распаковывать а это будет жутко медленно.

V1KT0P ★★
()

эмулятор при воспроизведении сжатого файла эмулятор иногда заикается и подлагивает. Может это связано с скоростью компакт-диска. При воспроизведении несжатого файла такой проблемы нет.

Упомянутые сжатые форматы расчитаны на работу с HDD, где случайное чтение хоть и медленное, но всё ещё в десяток раз быстрее, чем случайное чтение с оптических накопителей. Использование сжатых форматов непосредственно с CD не рекомендуется.

i-rinat ★★★★★
()
Ответ на: комментарий от DanilaZabiakaa

А тут была бы полезна команда, чтоб сжать, скажем, последние 30 мбайт.

Твоя проблема не в сжатии, а в случайных чтениях. Данные на дисках располагались так, чтобы за определённое время консоль могла их прочитать. С дополнительной обёрткой добавляются чтения метаданных, что двигает головку, внося неслабые такие задержки.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Использование сжатых форматов непосредственно с CD не рекомендуется.

Если сжимать по простым принципам, можно было бы избежать. Вообще, один диск записался с overburn и особых проблем нет. Другой с overburn зависает в игре, последние мегабайты вечно копируются в файловом менеджере, хотя образ так же ~710мб весит. Болванка такая же, видимо, особых гарантий записи overburn нет.

DanilaZabiakaa
() автор топика
Ответ на: комментарий от DanilaZabiakaa

А если пойти другим путем, вскрыть образ и поудалять лишний контент? или видео/изображения пережать?

Kolins ★★★★
()
Ответ на: комментарий от Kolins

Та ну, наоборот играю, хоть на эмуляторе, но с компакт диска, чтобы каноничнее.

Не просто файл какой-то воспроизводишь, а прожигаешь диск, ходишь в магазин, вставляешь в привод, можешь нарисовать подпись маркером, он крутится и шуршит.

А тут ещё портить качество из-за лишних 10 метров.

DanilaZabiakaa
() автор топика

Скорее всего эмулятор читает твой образ не строго последовательно, а кусками из разных мест. Большинство форматов сжатия работают линейно. То есть, чтобы распаковать кусок в середине, тебе надо сначала распаковать и отбросить начало.

И упирается это не в скорость распаковки, а в скорость чтения в том числе. У тебя начало архива кучу раз перечитывается.

Плюс степень сжатия обычно влияет только на скорость упаковки, а не распаковки.

Короче, тебе скорее нужно копать в сторону архивов с поддержкой произвольного доступа, а не менять степень сжатия. Ну либо взять DVD вместо CD.

KivApple ★★★★★
()

сугубо алгоритмическое решение - бить файло на части, каждую отдельно сжимать - потом методом упаковки рюкзака выбирать для каждой части, брать сжатый или несжатый вариант.

если формат файла дозволяет такие вариации (видео например), то даже будет воспроизводится обычными плеерами.

PS/ напомнило историю как люди делали Myst - подгоняли сжатие и расположение файлов на болванке.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

сугубо алгоритмическое решение - бить файло на части, каждую отдельно сжимать - потом методом упаковки рюкзака выбирать для каждой части, брать сжатый или несжатый вариант.

В принципе звучит рабоче, правда, нужно сжать чистым deflate (без zip и указателей, потом дописать со смещениями %) ). И надеяться, что разжималка deflate это прожуёт.

DanilaZabiakaa
() автор топика
Ответ на: комментарий от leopold

Может проще купить cd-r на 800mb за 250 рублей?

Не так часто встречаются в природе, цена в 5-10 раз выше, можно и DVD взять, да и замес вокруг того, как немноожечко урезать и так прекрасно жмущиеся данные

DanilaZabiakaa
() автор топика
Ответ на: комментарий от DanilaZabiakaa

Та ну, наоборот играю, хоть на эмуляторе, но с компакт диска, чтобы каноничнее.

на эмуляторе

с компакт диска

чтобы каноничнее

Ну ты ваще бешеный.

Zadoff386
()
Ответ на: комментарий от Zadoff386

Нуу скачать файл бесплатно из интернета и типа-игровой файл открыть, чтоб пройти с читами и перемотками под рукой - очень дешманское «увлечение».

А тут своими ногами ходишь, что-то покупаешь, прожигаешь, проходишь без сейвов-перемоток и тд (на KingStation), разгадываешь, на что-то натыкаешься.

Программы подгружают программные зависимости, а тут физические, типа ног, денег, продавцов дисков, моторчика, лазера, футляра.

DanilaZabiakaa
() автор топика
Ответ на: комментарий от Zhbert

У них же результаты сжатие в .gz поддерживали из коробки. Примерно раза в 2-2.5. И распаковывать для открытия не нужно было.

grem ★★★★★
()

Нашёл возможное решение в виде zisofs, создаёт файловую систему для оптических дисков с deflate сжатием. Из недостатков - работает только на Linux, да и на эмуляторе ещё не протестировано.

DanilaZabiakaa
() автор топика

Также нашлось еще одно возможное решение - сжатие образа при помощи аудиокодека flac, идущий в комплекте с chdman (mametools). На выходе из 710-мбайтного файла получается 610-мбайтный. Когда в zip с наименьшей степенью сжатия получается 450. Надеюсь, flac сжатие оптимизированнее для потокового чтения.

DanilaZabiakaa
() автор топика

Может это связано с скоростью компакт-диска

Если это связано со скоростью чтения компакт-диска, то будет тем лучше, чем больше информации можно прочитать с диска за единицу времени, а не наоборот, да?

slowpony ★★★★★
()
Ответ на: комментарий от slowpony

В ps1 чтение сд - 2х, у меня привод до 52х, сжатие иногда дает эффект, что скорость не помогает. Видимо, трабл с излишним движением головки привода. Тогда нужна компрессия, не создающая лишних движений, может аудиосжатие пойдет.

DanilaZabiakaa
() автор топика
Ответ на: комментарий от DanilaZabiakaa

нужна компрессия, не создающая лишних движений

В первую очередь нужны данные не создающие лишних движений. Может быть аудио?

slowpony ★★★★★
()

В принципе, удалось. На всякий случай даже перекомпилировал chdman (билдер сжатых chd образов), чтобы степень сжатия в FLAC была минимальная. В итоге 710-мбайтный образ превратился в 620-мбайтный. В дефолтном chdman размер получается 550МБ.

в ZIP (deflate) на минимальной степени получается 340МБ.

DanilaZabiakaa
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)