Pull to refresh

Comments 55

Крайне удивлен прочитаным. Я думал все на много проще.
* Ушел ковырять mp3шки
— Ушел ковырять mp3шки
Все уже расковырено… до нас
кстати, phpcode.us/ffmpeg-php/
ffmpeg_movie::getDuration() Возвращает продолжительность аудио или видео файла в секундах.
Я почему-то тоже во время ресеарча информации по той же задаче наткнулся на ffmpeg. Чем автору вариант такой не подошёл? Да и классы я видел тоже есть для работы с тэгами, даже для записи id3v2.
Мне больше понравился getID3. А копать формат я стал в познавательных целях. Ну может быть еще и то, что я не нашел нормальной документации на русском сыграло свою роль.
— Ушел ковырять mp3шки
Все уже расковырено… до нас
На Хабре блог «Алгоритмы» последние время очень радует. Почти всё попадает в Избранное.
А где бы почитать про структуру самих аудиоданных?
Есть в планах заняться этим вопросом плотнее. Если кто-либо не напишет ранее — это впролне может быть темой следующей статьи.
Напишите, там даже для layer3 не очень сложно.
Стандрат, в котором это описано называется ISO/IEC 11172-3 (Information technology — Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s — Part 3: Audio)
Весьма полезно. Предлагаю объявить это как «часть 1», а потом написать «часть 2» — собственно про аудиоданные.
Я как-то писал читалку данных из mp3 для одного проекта и тоже разбирался во всем этом. Но потом пришло понимание, что не стоит заниматься велосипедостроением, и я взял готовый модуль для perl. Но узнать о стоении mp3 файла было крайне интересно.
Как раз пользовался на php getID3 — неплохая библиотека, не без своих глюков конечно.
Прикольно что поддерживает расширение возможностей с помощью дополнительных «расширений» по разные форматы файлов. Можно тонко настроить под себя
Я тоже написал свою программу для чтения заголовков AVI, а потом нашел getID3 — лучшее, что есть на PHP для парсинга мета-данных различных мультимедиа форматов.
Бесспорно, getID3 — отличная вещь. Я, кстати, о ней изначально упомянул в ссылках.
Но желание самому «залезть внуть» видимо неистребимо )
вы упомянули про «Неплохая библиотека для получения информации о mp3.»
что это getID3 не узнаешь, если по ссылке не пройдешь, вот вам все про нее и говорят

а статья отличная, спасибо
Очень интересно, спасибо.

Кому интересно и кто хочет углубить свои знания в этой теме: в нашем с форумом программистов журнала тоже есть интересная статья про устройство mp3 файла.
Вот ссылка на онлайн просмоторщик номера: www.procoder.info/index.php?option=com_flippingbook&view=book&id=6
Спасибо за внимание.
Я не понимаю почему меня заминусовали?

Я предложил информацию, которая может быть интересна тем, кто хочет подробнее ознакомится с темой.
На хабре не любят внешние ссылки с саморекламой. Вот вы и поплатились.
Лично я ссылки на _некоммерческие_ проекты рекламой не считаю, даже наоборот это источник дополнительных знаний.
Я с вами полностью согласен. На самом деле ведь могу ошибаться. Всё вышесказанное лишь догадка, предположение и основано на личных наблюдениях. А тут кто его знает в чём причина…
Причина одна и она давно известна. Стадность пользователей Хабрахабра.
Текст уж больно на рекламу похож, если бы просто написали ссылку и подпись «Ещё по теме», думаю эффект был бы диаметрально противоположный ;)
Мега-полезная статья для меня! Плюсую.
интересно, какой мудак минус поставил (:
Использовал для определения длины mp3-трека на сайте простенький класс. Всего 340 строчек кода в нём и есть всё необходимое. Длина определяется одной строчкой кода.
Сейчас к сожалению ссылок найти не могу на него, но если будет интересно, дам ссылку на сайт, где всё это дело применялось.
340 строчек… немало. В моем примере (ссылка в конце статьи) php-скрипт занимает 190 строк.
Он получает всю необходимую информацию о mp3 файле, включая ID3v1-теги и заголовок ID3v2-тегов.

Учитывая что я не ставил цель написать максимально короткий скрипт — думаю что можно порядком сократить.
Полностью не просмотрел вашу работу, но на первый взгляд тот скрипт, что использовался мною, чем-то более функционален. Без один, он просто писался под другие цели :) За статью спасибо, при необходимости вернусь к ней снова и испробую на деле.
Сразу лабораторные по теории кодирования информации вспоминаются… Эх золотое было время…
Emphasis это не «акцент», это специфическое предыскажение для некоторых систем шумоподавления типа Dolby, например. Соответственно, наличие этого признака должно было включать или выключать экспандер в тракте. Сегодня не используется.
Согласен с Вами. Описание этого поля как «Акцент» я где-то увидел в свое время и запомнил именно так — показалось удобно.
В любом случае это поле не является значимым в наше время.
> Однако в данном формате подразумевается, что 1 килобит = 1000 бит, а не 1024

В любом формате 1 килобит = 1000 бит
UFO just landed and posted this here
Спасибо за информацию. Буду иметь ввиду. Но все же считаю, что об этом было необходимо упомянуть, так как кто-либо мог об этом не знать и использовать 1024. А искать потом ошибку — очень не просто как мне кажется
UFO just landed and posted this here
вот это респект…
первая длинная статья, которую прочитал с интересом и до конца… )))
Спасибо, взял на заметку (в избранное)
UFO just landed and posted this here
Вы пересказали спецификацию. А в чем прикол?
Я попытался собрать информацию о информативной структуре mp3-файла в одном месте, на русском языке, с русскими таблицами и примерами. Лично мне такая информация очень помогла бы в своё время. И поэтому, когда я это собрал, я подумал — что неплохо бы поделиться. Как-то так.
Понял, ключевое слово — русский.
Далеко не все отлично знают английский язык. (я в этих «не все» :)
Вот именно этой информации можно нарыть без проблем, кто хоть раз озадачивался этой проблемой.
Я в поисках инфы для построения waveforms. Пример.
Для mp3 решение еще не нашел.
Позволю себе исправить одну небольшую неточность в подсчете длины при постоянном битрейте (CBR).
Например, файл имеет размер 350670 байт. Есть ID3v1 теги (128 байт) и ID3v2 теги (1024 байта). Битрейт = 96. Следовательно размер аудиоданных равен 350670 – 128 – 1024 = 349518 байт.
Длительность = 349518 / 96000 * 8 = 29,1265 = 29 секунд

Мы должны учитывать размеры заголовков фреймов. Если у нас N фреймов аудиоданных, то нужно будет еще отнять от размера файла размер заголовков всех фреймов (8*N), т.е. итоговая формула:

length = (filesize - 128 - 1024 - 8*N) / (bitrate * 8).

Поправка небольшая, но все же ;)
Гм, оказывается, во-первых, длина заголовка фрейма 4 байта (в статье была опечатка), а, во-вторых, согласно экспериментальным данным, отнимать все же размер заголовков не надо (почему, это уже другой вопрос — возможно, там битрейт учитывает заголовки)…
Опечатку исправил, спасибо.
Статья о структуре самих аудио-данных еще готовится. Возможно там и будет видно, как заголовки фреймов вписываются в общую картину
Скажите, а есть ли ограничение хранения звуков в mp3 по частоте? скажем 20000Hz может там быть?
Sign up to leave a comment.

Articles