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