Как конвертировать WAV в MP3 без добавления тишины в начале

4502
Niklas

Вот что мне нужно сделать: конвертировать 30,0 секунд WAV в 30,0 MP3.

Я пытался сделать это, используя LAME, однако, независимо от того, что я пытаюсь, LAME всегда добавляет короткий момент молчания к выходному mp3. При использовании LAME мой 30,0 секунд WAV становится 30,1 секунд MP3. Это глупо.

Кто-нибудь знает способ конвертировать WAV в MP3 с помощью командной строки Windows?

Например, запустив "program.exe in.wav out.mp3" из CMD?

Крайне важно, чтобы к результирующему файлу MP3 не добавлялась тишина Я не могу подчеркнуть это достаточно.

6
Это невозможно из-за специфики самого формата MP3, который требует использования кадров с постоянной длиной и требует преамбулы с полукадром. Вы можете * зацикливать * аудио беспрепятственно с помощью различных приемов, но вы просто не можете создать действительный, совместимый со стандартами MP3 из произвольного источника без этого молчания. vaxquis 7 лет назад 0

3 ответа на вопрос

2
Mike Brown

Поток MP3 содержит информацию для генерации набора сэмплов, где каждый сэмпл соответствует сэмплу в исходных данных LPCM (например, из файла WAV), но побочным эффектом кодирования является то, что к каждому из них добавляется дополнительный «мусор». конец, и побочным эффектом декодирования является то, что к началу добавлено еще больше мусора. Декодер будет знать, сколько он добавляет, и пропустит эти выборки, но добавленная кодировщиком нежелательная память не является полностью предсказуемой (разные кодеры добавляют разные количества), поэтому декодер не может пропустить эти выборки, если он каким-то образом не информирован о том, что пропускать. Некоторые кодировщики, такие как LAME, добавляют такую ​​информацию «Воспроизведение без пауз» или «Задержка и заполнение» (в формате, специфичном для кодировщика, потому что для него нет стандарта) в заголовок VBR Info (VBRI) или Xing файла, который является стандартным даже для файлов CBR, и который содержит другую информацию, которая иногда полезна для проигрывателя. Этот заголовок фактически является кадром молчания (обычно 1152 сэмпла) с некоторой специально отформатированной информацией, вставленной между заголовком кадра и началом его нулевых аудиоданных. Большинство декодеров / проигрывателей распознают кадр как особый и пропускают эти сэмплы, но некоторые этого не делают, поэтому существует еще одна потенциальная точка отказа. поэтому я хотел бы убедиться, что вы используете совместимый кодер / декодер, чтобы получить файлы правильной длины, срезанные ненужной информацией в качестве выходных данных. Большинство декодеров / проигрывателей распознают кадр как особый и пропускают эти сэмплы, но некоторые этого не делают, поэтому существует еще одна потенциальная точка отказа. поэтому я хотел бы убедиться, что вы используете совместимый кодер / декодер, чтобы получить файлы правильной длины, срезанные ненужной информацией в качестве выходных данных. Большинство декодеров / проигрывателей распознают кадр как особый и пропускают эти сэмплы, но некоторые этого не делают, поэтому существует еще одна потенциальная точка отказа. поэтому я хотел бы убедиться, что вы используете совместимый кодер / декодер, чтобы получить файлы правильной длины, срезанные ненужной информацией в качестве выходных данных.

Ваш второй вопрос ... Вы обратили внимание на параметр "--decode" приложения командной строки LAME? :) Это должно решить вашу проблему, если вы используете LAME в качестве кодера. Длина вывода должна соответствовать входу.

1
JohannesM

Я хочу добавить этот FAQ и тему суперпользователя к обсуждению:

Спасибо за ответ, но это не помогает. LAME подтверждает в этом текстовом файле, что они действительно добавляют тишину к аудио. Но должен быть способ обойти тишину в MP3, например, Adobe нашла способ как-нибудь. При добавлении WAV во Flash и установке его в цикле, он не добавляет никакого бесшумного пробела в результирующий MP3 при экспорте. Какую магию обнаружил Adobe? Именно Macromedia (создатель Flash) заставила эту магию работать во Flash. Кто-нибудь знает, как они это делают? Niklas 12 лет назад 0
Вы пробовали http://sox.sourceforge.net? JohannesM 12 лет назад 0
Я пытался попробовать это, но он не поставляется с поддержкой MP3 из доступных предварительно скомпилированных двоичных файлов, и я не достаточно опытен, чтобы скомпилировать его самостоятельно. Я заметил, что у sox есть поддержка библиотек "libmad" и "libtwolame" для создания MP3 (в дополнение к lame), поэтому я хотел бы попробовать это. Знаете, где я могу скачать версию sox с предварительно скомпилированной поддержкой MP3? Niklas 12 лет назад 0
Извините, к сожалению нет. JohannesM 12 лет назад 0
0
amh15

Я хочу дать несколько более краткий и ясный ответ.

Боюсь, что нет способа создать файлы MP3, которые последовательно воспроизводятся без пропусков в начале и в конце. Это известно как Gapless Playback и является очень обсуждаемой проблемой.

Как говорит хотя бы один из других ответов, есть обходные пути, которые работают с некоторыми конкретными музыкальными проигрывателями.