?

Log in

No account? Create an account
черная магия - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

черная магия [окт. 28, 2016|02:25 pm]
Anatoly Vorobey
[Tags|]

Сегодня я узнал, что два MP3 файла можно соединить вместе просто командой cat в Юниксе или copy /b в Виндоус (т.е. просто содержимое файлов соединить) и в результате выйдет совершенно законный MP3 файл, который нормально будет проигрываться.

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

(да, я уже прочитал и понимаю, как это работает, но все равно, WTF)
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: francis_drake
2016-10-28 11:27 am
Ещё про рарджпеги почитайте.
(Ответить) (Thread)
[User Picture]From: avva
2016-10-28 11:34 am
Это как раз не так удивительно - не более, чем самораскрывающиеся архивы.
(Ответить) (Parent) (Thread) (Развернуть)
From: (Anonymous)
2016-10-28 11:33 am

Спасибо.

Полезная информация.
(Ответить) (Thread)
[User Picture]From: breqwas
2016-10-28 11:43 am
В MySQL myisam-таблица (та, что без транзакций) состоит на диске из трёх файлов: frm, MYI, MYD - бинарный эквивалент definition'а таблицы, индекс и данные. Данные - это просто бинарные данные, последовательность строк без заголовков и разделителей.

Отсюда есть два следствия. Во-первых, самый быстрый способ, скажем, слить несколько больших таблиц с одинаковым набором и порядком колонок - это сконкатенировать MYD и запустить myisamchk, чтобы перестроился индекс. Во-вторых, если, скажем, надо линейно пройтись по всем строчкам очень большой таблицы, которую сейчас никто не изменяет, то можно не выбирать данные из mysql, а запросить у него describe table, и дальше читать данные напрямую с диска, маппинг этих бинарных данных в C-структуру (или, там, в функции pack/unpack в perl) тривиален.

Плюс: всё работает очень быстро. Минусы: 1) надо всё делать очень аккуратно 2) те, кто впервые видят такую деятельность в коде, считают что авторы кода ненормальны

Edited at 2016-10-28 11:43 (UTC)
(Ответить) (Thread)
[User Picture]From: djdrive
2016-10-28 11:48 am
Второе, я уверен, гораздо оптимальнее и быстрее реализовано в самой MySQL, чем это можно сделать своими руками (в приемлемое время).
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: ranmod
2016-10-28 11:43 am
не знаю пригодилось бы ли это мне зачем-либо, но стоило узнать об этом 17 лет назад
(Ответить) (Thread)
[User Picture]From: avva
2016-10-28 12:50 pm
Вот и я думаю.
(Ответить) (Parent) (Thread)
[User Picture]From: juunitaki
2016-10-28 11:49 am
Где бы прочитать про формат MPEG TS и MP4?
MPEG TS тоже можно склеивать cat'ом.
(Ответить) (Thread)
[User Picture]From: dark_barker
2016-10-29 03:45 pm
Потому что там всё аналогично - по сути набор пакетов, упакованных подряд без всякой иерархии и структуры. Как и любой потоковый контейнер.
Тот же мпегтс так и работает в обычном иптв -просто по удп гонятся пакеты вперемешку, где пакеты от разных кналово и разных качествах просмотра итд.
(Ответить) (Parent) (Thread)
[User Picture]From: rednyrg721
2016-10-28 11:54 am
А теги как же? Они в начале или конце файла бывают (в зависимости от того, ID3v1 или ID3v2) - могут попасть в середину получившегося.
(Ответить) (Thread)
[User Picture]From: gray_bird
2016-10-28 12:12 pm

+1
интересно, что на тегах покажет плеер у такой химеры?

(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: dzz
2016-10-28 12:18 pm
К сожалению, для RIFF и MKV-контейнеров это совсем не так.
(Ответить) (Thread)
From: inconceivable2
2016-10-28 12:25 pm
А вот я всю жизнь думал, что знаю, что Zip файлы читаются с конца, и что можно сконкатенировать какой-то файл и zip-архив, и все программы смогут с ним работать. Выяснилось, что читать такие архивы программы могут, но не все (скажем, WinZip уже не может), но вот изменять (например, добавить файл) уже почти ни одна программа не в состоянии, включая сам zip.
(Ответить) (Thread)
From: (Anonymous)
2016-10-28 12:37 pm

спасибо

Работает. Впервые слышу, что их можно соединять вот так просто...
(Ответить) (Thread)
[User Picture]From: rednyrg721
2016-10-28 12:41 pm
А так, для клейки/резки mp3 есть фриварный mp3DirectCut.
(Ответить) (Thread)
[User Picture]From: avva
2016-10-28 12:51 pm
Для резки мне нравится mp3splt, правда виндовская версия у меня почему-то не работает. Линуксовская бежит, находит сама тишину и на ней умно режет с кучей опций (мне именно это нужно было).
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: bvlb
2016-10-28 01:36 pm
Хорошо бы еще, чтобы вычитание тоже работало: например отрезаешь 1% длины спереди или сзади и 1% по времени тоже отрезается.

И еще хорошо бы, если бы файл сжимался и звук тогда тоже сжимался, наприме быстрее в 2 раза становился.

И умножать бы два mp3 тоже было бы хорошо!
(Ответить) (Thread)
From: karpion
2016-10-28 02:12 pm
У Вас странные представления о кодировке звука и о компрессии...
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: cat_mucius
2016-10-28 02:05 pm
А grep-ом по текстам песен пройтись нельзя?
(Ответить) (Thread)
[User Picture]From: aosypov
2016-10-28 04:17 pm
только с soundlike модулем ;)
(Ответить) (Parent) (Thread)
From: karpion
2016-10-28 02:12 pm
Я так понимаю - зависит от программы, воспроизводящей звук.
(Ответить) (Thread)
From: (Anonymous)
2016-10-28 02:40 pm
Причем это не зависит от того про сколько бинарных файл форматов я узнал. Перечитал предложение и подумал, что в принципе не могу написать хуже на англ:

This observation happens to me every single time I discover this feature for yet another binary file format. We simply do not expect concatenability from the binary files and they do not fail to continue to pleasantly surprise us.
(Ответить) (Thread)
[User Picture]From: dims12
2016-10-28 03:11 pm
Там, вроде бы, заголовок может быть, так что файл будет-таки не совсем корректным.
(Ответить) (Thread)
Страница 1 из 2
<<[1] [2] >>