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

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

(да, я уже прочитал и понимаю, как это работает, но все равно, WTF)
Page 1 of 3 << [1] [2] [3] >>

Date: 2016-10-28 11:27 am (UTC)
From: [identity profile] francis-drake.livejournal.com
Ещё про рарджпеги почитайте.

Спасибо.

Date: 2016-10-28 11:33 am (UTC)
From: (Anonymous)
Полезная информация.

Date: 2016-10-28 11:34 am (UTC)
From: [identity profile] avva.livejournal.com
Это как раз не так удивительно - не более, чем самораскрывающиеся архивы.

Date: 2016-10-28 11:43 am (UTC)
From: [identity profile] breqwas.livejournal.com
В MySQL myisam-таблица (та, что без транзакций) состоит на диске из трёх файлов: frm, MYI, MYD - бинарный эквивалент definition'а таблицы, индекс и данные. Данные - это просто бинарные данные, последовательность строк без заголовков и разделителей.

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

Плюс: всё работает очень быстро. Минусы: 1) надо всё делать очень аккуратно 2) те, кто впервые видят такую деятельность в коде, считают что авторы кода ненормальны
Edited Date: 2016-10-28 11:43 am (UTC)

Date: 2016-10-28 11:43 am (UTC)
From: [identity profile] ranmod.livejournal.com
не знаю пригодилось бы ли это мне зачем-либо, но стоило узнать об этом 17 лет назад

Date: 2016-10-28 11:48 am (UTC)
From: [identity profile] djdrive.livejournal.com
Второе, я уверен, гораздо оптимальнее и быстрее реализовано в самой MySQL, чем это можно сделать своими руками (в приемлемое время).

Date: 2016-10-28 11:49 am (UTC)
From: [identity profile] juunitaki.livejournal.com
Где бы прочитать про формат MPEG TS и MP4?
MPEG TS тоже можно склеивать cat'ом.

Date: 2016-10-28 11:54 am (UTC)
From: [identity profile] rednyrg721.livejournal.com
А теги как же? Они в начале или конце файла бывают (в зависимости от того, ID3v1 или ID3v2) - могут попасть в середину получившегося.

Date: 2016-10-28 12:02 pm (UTC)
From: [identity profile] breqwas.livejournal.com
Это и правда выглядит контр-интуитивно, но нет, в некотором очень узком классе случаев не оптимальнее. У файла MYD действительно нет никакого формата; если у вас в таблице три колонки int, int, bigint и десять строк, то там будет лежать (4 + 4 + 8) * 10 = 160 байт данных, которые можно линейно последовательно читать. Делать это напрямую с диска быстрее, чем через mysql + сокет + ваш API к mysql.

Понятно, что любая выборка, сортировка или аггрегация быстрее делается самим mysql-ем, но если вам правда надо выбрать каждую строчку и на неё в прикладном коде посмотреть, то так - быстрее.

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

Но если так можно не делать, то лучше не делать, конечно.

Date: 2016-10-28 12:12 pm (UTC)
From: [identity profile] gray-bird.livejournal.com

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

Date: 2016-10-28 12:18 pm (UTC)
From: [identity profile] dzz.livejournal.com
К сожалению, для RIFF и MKV-контейнеров это совсем не так.

Date: 2016-10-28 12:18 pm (UTC)
From: [identity profile] dzz.livejournal.com
Скорее всего, прочитаются и будут показаны теги от первого файла.

Date: 2016-10-28 12:25 pm (UTC)
From: [identity profile] inconceivable2.livejournal.com
А вот я всю жизнь думал, что знаю, что Zip файлы читаются с конца, и что можно сконкатенировать какой-то файл и zip-архив, и все программы смогут с ним работать. Выяснилось, что читать такие архивы программы могут, но не все (скажем, WinZip уже не может), но вот изменять (например, добавить файл) уже почти ни одна программа не в состоянии, включая сам zip.

Date: 2016-10-28 12:30 pm (UTC)
From: [identity profile] loyso-b.livejournal.com
id3 тег первого файла будет слышен как щелчок/glitch в месте склейки (если у фреймов нет crc)

спасибо

Date: 2016-10-28 12:37 pm (UTC)
From: (Anonymous)
Работает. Впервые слышу, что их можно соединять вот так просто...

Date: 2016-10-28 12:37 pm (UTC)
From: [identity profile] rednyrg721.livejournal.com
Современные редакторы обычно пишут и ID3v1 и ID3v2, так что у химеры будет ID3v2 от первого файла, и ID3v1 от второго :) Плеер покажет те, которые у него приоритетные (ID3v2 наверное, они какбе круче по возможностям).

Date: 2016-10-28 12:40 pm (UTC)
From: [identity profile] rednyrg721.livejournal.com
Вообще интересно, умеют ли плейеры детектить теги в середине файла, там же есть вроде бы сигнатура какая-то у ID3v2.

Date: 2016-10-28 12:41 pm (UTC)
From: [identity profile] rednyrg721.livejournal.com
А так, для клейки/резки mp3 есть фриварный mp3DirectCut.

Date: 2016-10-28 12:50 pm (UTC)
From: [identity profile] avva.livejournal.com
Вот и я думаю.

Date: 2016-10-28 12:51 pm (UTC)
From: [identity profile] avva.livejournal.com
Для резки мне нравится mp3splt, правда виндовская версия у меня почему-то не работает. Линуксовская бежит, находит сама тишину и на ней умно режет с кучей опций (мне именно это нужно было).

Date: 2016-10-28 12:57 pm (UTC)
From: [identity profile] avva.livejournal.com
Две таблицы слить - это забавно. Вряд ли мне пригодится, но понравилось.

Date: 2016-10-28 01:13 pm (UTC)
From: [identity profile] rednyrg721.livejournal.com
Про эту утиль не слышал, ничего не могу сказать. Просто mp3DirectCut довольно-таки старая, с 2000 существует и обновляется, так что я на другие не смотрел.

Date: 2016-10-28 01:36 pm (UTC)
From: [identity profile] bvlb.livejournal.com
Хорошо бы еще, чтобы вычитание тоже работало: например отрезаешь 1% длины спереди или сзади и 1% по времени тоже отрезается.

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

И умножать бы два mp3 тоже было бы хорошо!

Date: 2016-10-28 02:05 pm (UTC)
cat_mucius: (Default)
From: [personal profile] cat_mucius
А grep-ом по текстам песен пройтись нельзя?

Date: 2016-10-28 02:10 pm (UTC)
From: [identity profile] konstantin khlebnikov (from livejournal.com)
Не обязательно - у каждого фрейма заголовок есть с определённой сигнатурой. Щёлкать будет только если такие-же байты найдутся внутри блока с тэгами.
Page 1 of 3 << [1] [2] [3] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
2829 30 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 1st, 2026 02:17 am
Powered by Dreamwidth Studios