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

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

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

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

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

(no subject)

From: [identity profile] francis-drake.livejournal.com - Date: 2016-10-28 02:22 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2016-10-28 03:26 pm (UTC) - Expand

Date: 2016-10-28 03:44 pm (UTC)
From: [identity profile] Михаил Безух (from livejournal.com)
Да-да, я помню, как был ошеломлен, когда случайно попробовал открыть 1 том из архива, в котором содержался большой (по меркам конца 90-х) файл JPEG.

Спасибо.

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

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:48 am (UTC)
From: [identity profile] djdrive.livejournal.com
Второе, я уверен, гораздо оптимальнее и быстрее реализовано в самой MySQL, чем это можно сделать своими руками (в приемлемое время).

(no subject)

From: [identity profile] breqwas.livejournal.com - Date: 2016-10-28 12:02 pm (UTC) - Expand

(no subject)

From: [identity profile] djdrive.livejournal.com - Date: 2016-10-28 02:29 pm (UTC) - Expand

(no subject)

From: [identity profile] aosypov.livejournal.com - Date: 2016-10-28 04:12 pm (UTC) - Expand

(no subject)

From: [identity profile] breqwas.livejournal.com - Date: 2016-10-28 04:35 pm (UTC) - Expand

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

Date: 2016-10-28 02:48 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
А как насчёт удалённых строк?

(no subject)

From: [identity profile] breqwas.livejournal.com - Date: 2016-10-28 02:53 pm (UTC) - Expand

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

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

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

Date: 2016-10-29 03:45 pm (UTC)
From: [identity profile] dark-barker.livejournal.com
Потому что там всё аналогично - по сути набор пакетов, упакованных подряд без всякой иерархии и структуры. Как и любой потоковый контейнер.
Тот же мпегтс так и работает в обычном иптв -просто по удп гонятся пакеты вперемешку, где пакеты от разных кналово и разных качествах просмотра итд.

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

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

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

(no subject)

From: [identity profile] dzz.livejournal.com - Date: 2016-10-28 12:18 pm (UTC) - Expand

(no subject)

From: [identity profile] rednyrg721.livejournal.com - Date: 2016-10-28 12:37 pm (UTC) - Expand

(no subject)

From: [identity profile] loyso-b.livejournal.com - Date: 2016-10-28 12:30 pm (UTC) - Expand

(no subject)

From: [identity profile] rednyrg721.livejournal.com - Date: 2016-10-28 12:40 pm (UTC) - Expand

(no subject)

From: [identity profile] konstantin khlebnikov - Date: 2016-10-28 02:10 pm (UTC) - Expand

(no subject)

From: [identity profile] rednyrg721.livejournal.com - Date: 2016-10-28 02:28 pm (UTC) - Expand

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

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

спасибо

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

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

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

(no subject)

From: [identity profile] rednyrg721.livejournal.com - Date: 2016-10-28 01:13 pm (UTC) - Expand

(no subject)

From: [identity profile] ospf-ripe.livejournal.com - Date: 2016-10-28 04:19 pm (UTC) - Expand

(no subject)

From: [identity profile] substractor.livejournal.com - Date: 2016-10-29 04:36 am (UTC) - Expand

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

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

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

Date: 2016-10-28 02:12 pm (UTC)
From: [identity profile] karpion.livejournal.com
У Вас странные представления о кодировке звука и о компрессии...

(no subject)

From: [identity profile] bvlb.livejournal.com - Date: 2016-10-28 02:36 pm (UTC) - Expand

(no subject)

From: [identity profile] karpion.livejournal.com - Date: 2016-10-28 11:09 pm (UTC) - Expand

(no subject)

From: [identity profile] bvlb.livejournal.com - Date: 2016-10-29 07:57 am (UTC) - Expand

(no subject)

From: [identity profile] isk.livejournal.com - Date: 2016-10-31 04:37 pm (UTC) - Expand

(no subject)

From: [identity profile] karpion.livejournal.com - Date: 2016-10-31 04:38 pm (UTC) - Expand

(no subject)

From: [identity profile] isk.livejournal.com - Date: 2016-10-31 04:44 pm (UTC) - Expand

(no subject)

From: [identity profile] Лев Горенштейн - Date: 2016-10-29 04:19 am (UTC) - Expand

(no subject)

From: [identity profile] bvlb.livejournal.com - Date: 2016-10-29 07:58 am (UTC) - Expand

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

Date: 2016-10-28 04:17 pm (UTC)
From: [identity profile] aosypov.livejournal.com
только с soundlike модулем ;)

Date: 2016-10-28 02:12 pm (UTC)
From: [identity profile] karpion.livejournal.com
Я так понимаю - зависит от программы, воспроизводящей звук.

Date: 2016-10-28 02:40 pm (UTC)
From: (Anonymous)
Причем это не зависит от того про сколько бинарных файл форматов я узнал. Перечитал предложение и подумал, что в принципе не могу написать хуже на англ:

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.

Date: 2016-10-28 03:11 pm (UTC)
From: [identity profile] dims12.livejournal.com
Там, вроде бы, заголовок может быть, так что файл будет-таки не совсем корректным.

Date: 2016-10-28 04:10 pm (UTC)
From: [identity profile] ospf-ripe.livejournal.com
Файл будет проигрываться, но полностью валидным его назвать нельзя. Кроме MPEG фреймов в современном mp3 есть и другие данные:
- ID3v2 tag в начале файла (ID3v.2.4 бывает в конце, но не знаю встречаются ли такие файлы в дикой природе)
- ID3v1 tag в конце.
- Xing/mp3 info tag: http://gabriel.mp3-tech.org/mp3infotag.html

При склейке в середине файла окажется ID3v1 первого файла и ID3v2 второго файла. Поскольку плееры не ожидают тэги в середине файла, может быть слышен щелчёк.

Для ID3v2 предусмотрена unsynchronisation scheme чтобы в ID3v2 не было mpeg sync byte и декотер не пытался искать там аудиоданные. Но unsynchronisation сейчас почти никто не делает, потому что современные плееры понимают ID3v2 (в начале файла, но не в середине).
В ID3v1 unsynchronisation нету, и если там вдруг попадается 0xff000000 то декодер попытается интерпретировать это как MPEG-фрейм.

mp3 info frame второго файла наверняка будет проигнорирован, так что метаданные которые там хранятся будут из первого файла, из за этого:
- плеер может неправильно показывать длительность файла
- если плеер поддерживает mp3 gain по данным mp3 info frame то значение будет из первого файла (и если первый тихий, а второй громкий, то случится clipping).
- для VBR этот frame содержит таблицу смещений, так что могут возникнуть проблемы с перемоткой склеенного файла в плеере.

В общем настоящий перфекционист не станет склеивать mp3 командой cat.

Date: 2016-10-28 04:19 pm (UTC)
From: [identity profile] rednyrg721.livejournal.com
Довольно часто, кстати, и https://en.wikipedia.org/wiki/APE_tag клеют к мп3, по крайней мере по информации dBpoweramp, который по наводке мыши показывает всяческую инфу об мп3, в том числе встроенные теги.

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2016-10-28 05:07 pm (UTC) - Expand

(no subject)

From: [identity profile] gegmopo4.livejournal.com - Date: 2016-10-28 06:31 pm (UTC) - Expand

(no subject)

From: [identity profile] rednyrg721.livejournal.com - Date: 2016-10-28 06:37 pm (UTC) - Expand

(no subject)

From: [identity profile] f137.livejournal.com - Date: 2016-10-28 07:42 pm (UTC) - Expand

(no subject)

From: [identity profile] ospf-ripe.livejournal.com - Date: 2016-10-28 08:30 pm (UTC) - Expand

(no subject)

From: [identity profile] ospf-ripe.livejournal.com - Date: 2016-10-28 08:41 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2016-10-28 09:30 pm (UTC) - Expand

(no subject)

From: [identity profile] pilpilon.livejournal.com - Date: 2016-10-29 02:23 pm (UTC) - Expand

(no subject)

From: [identity profile] kanenko.livejournal.com - Date: 2016-11-06 10:47 pm (UTC) - Expand

Date: 2016-10-28 08:50 pm (UTC)
From: [identity profile] ospf-ripe.livejournal.com
Файлы сжатые gzip тоже можно склеивать:

> echo a | gzip -c > 1.gz
> echo b | gzip -c > 2.gz
> cat 1.gz 2.gz > 12.gz
> zcat 12.gz
a
b

Date: 2016-10-28 09:03 pm (UTC)
cat_mucius: (Default)
From: [personal profile] cat_mucius
Wow. Мерси, полезно знать. :-)

Date: 2016-10-29 12:26 am (UTC)
From: (Anonymous)
Это справедливо вообще для MPEG-файлов.

Date: 2016-10-29 01:43 am (UTC)
From: [identity profile] occuserpens.livejournal.com
http://stackoverflow.com/questions/62618/what-is-the-best-way-to-merge-mp3-files

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 Dec. 31st, 2025 10:38 pm
Powered by Dreamwidth Studios