2009-07-24 4 views
5

Я хочу сделать программу, которая принимает файл MP3 и разбивает его на несколько небольших mp3-файлов на основе 1-2 секунд без звука (тишина). Что это самый простой способ сделать это в C#?Как разбить mp3-файл на более мелкие файлы?

+1

Вы пробовали использовать ffmpeg? –

+0

Нужно ли это делать программно? Я бы предположил, что для этого есть какое-то существующее программное обеспечение. –

+0

Я видел случайный альбом, который был разорван таким образом, что все треки сделали один массивный файл; Я бы предположил, что у Rhein есть несколько файлов, сконфигурированных таким образом, и они хотят убирать их партиями, тем самым облегчая организацию библиотеки. Несмотря на то, что я сказал ниже, я, вероятно, предлагаю просто перепрограммировать альбомы, о которых идет речь. У вас есть законные права на них, верно? – Adrien

ответ

1

Знание бинарного формата файла было бы хорошим местом для начала. Сделав это, вы узнаете, как выглядит тишина в файле. Возможно, вам придется точно определить, что такое тишина. Предполагая, что, как и большинство аудио, это началось с аналогового источника, почти наверняка есть некоторый шум, зарытый в «тишине». Какова будет ваша толерантность к окружающему/фоновому шуму?

Как только вы знаете, что ищете, просто просмотрите файл, ища «это».

Простой ...

4

Bass library. У баса есть все, что вам нужно. Он может получать доступ, записывать и редактировать медиапотоки, такие как mp3, позволяя вам выбирать громкость в разные моменты времени. Он имеет .net api, поэтому вы можете использовать его в C#. К сожалению, это стоит денег, если вы используете его для коммерческого применения, но они предоставляют бесплатную некоммерческую лицензию.

Sox - инструмент командной строки, который имеет возможность разделить mp3 на n секунд молчания. Вы всегда можете использовать системную команду для вызова sox из C#.

Другие связанные ссылки.

Ripping a CD to mp3 in C# - third party component or api out there?

Audio Libraries for MP3 editing

How do I merge/join mp3 files with c#

Этот код показывает способ сделать компакт-диск риппер в C#. Есть API от некоторых поставщиков, которые позволяют читать аудио CD треков, но также можно сделать с использованием API-интерфейсов, которые позволяют низкоуровневому доступу к CD-дискам, таким как ASPI, от кодов управления Adaptec или IOCTL. Последний метод используется в этом случае, , потому что нет необходимости устанавливать любое стороннее программное обеспечение, это , полностью покрытое функциями Win32 API .

http://www.codeproject.com/KB/cs/csharpripper.aspx

2

Нарезка MP3 поток будет трудно сделать с любой степенью точности. Сжатые данные MP3 существуют в виде последовательных фрагментов аудиоданных, состоящих из множества выборок. Самый простой способ выполнить это - это декодировать поток либо постепенно, либо полностью, выполнить свою манипуляцию, а затем перекодировать ее (что, как я понимаю, это то, как это делается в большинстве программ для jukebox)

Смежные вопросы