c ++ конвертация аудио (mp3 -> ogg) вопрос - PullRequest
4 голосов
/ 03 июня 2009

Мне было интересно, знает ли кто-нибудь, как преобразовать аудиофайл mp3 в аудиофайл ogg. Я знаю, что есть программы, которые вы можете купить онлайн, но я бы предпочел иметь свое собственное маленькое приложение, которое позволило бы мне конвертировать столько файлов, сколько я хотел.

Ответы [ 5 ]

4 голосов
/ 03 июня 2009

Это очень просто. Я бы не стал использовать Windows Media Format SDK. Просто из-за того, что это слишком для этой работы.

Вам нужен MP3-декодер и OGG-кодер, и немного клея для этого (открытие файлов, настройка кодеков, передача необработанных аудиоданных вокруг т. Д.)

Для декодера MP3 я предлагаю вам взглянуть на библиотеку liblame или использовать эту расшифровку lib http://www.codeproject.com/KB/audio-video/madlldlib.aspx в качестве отправной точки.

Для OGG не так много вариантов. Вам нужны libogg и libvorbis. Легко как то. Примеры кодов, которые поставляются с библиотеками, показывают, как выполнить кодировку.

Удачи.

2 голосов
/ 22 октября 2010

Это плохая идея. Цитировать из Vorbis FAQ

Вы можете конвертировать любой аудиоформат в Огг Ворбис. Тем не менее, преобразование из один формат с потерями, как MP3, в другой Формат с потерями, как и Vorbis, это вообще плохая идея. И MP3, и Кодеры Vorbis достигают высоких коэффициенты сжатия, выбрасывая части аудио сигнала, который вы наверное не услышу. Тем не менее, MP3 и кодеки Vorbis очень разные, поэтому каждый из них будет выбрасывать разные части аудио, хотя есть конечно, есть некоторые совпадения. преобразование MP3 для Vorbis включает в себя декодирование MP3 файл возвращается в несжатый формат формат, как WAV, и повторное сжатие используя кодировщик Ogg Vorbis. в декодированном MP3 будут отсутствовать части оригинального аудио, что MP3 кодировщик выбрал для отбрасывания. Огг Затем кодировщик Vorbis откажется от других аудио компоненты при сжатии данные. В лучшем случае результат будет файл Ogg, который звучит так же, как ваш оригинальный MP3, но это самый вероятно, что полученный файл звучат хуже, чем ваш оригинальный MP3. В ни в коем случае вы не получите файл, который звучит лучше, чем оригинальный MP3.

Так как многие музыкальные проигрыватели могут играть как MP3 и Ogg файлы, нет причин что вы должны переключить все ваши файлы в один формат или другой. Если тебе нравится Ogg Vorbis, то мы бы рекомендуем вам использовать его, когда вы кодировать из оригинального звука без потерь источники (например, компакт-диски). При кодировании из оригиналы, вы найдете, что вы можете сделать файлы Ogg меньше или лучшее качество (или оба), чем ваш MP3.

(Если вы должны обязательно конвертировать от MP3 до Ogg, есть несколько скрипты преобразования доступны на Freshmeat .)

http://www.vorbis.com/faq/#transcode

И, ради точности, из того же FAQ:

Ogg Ogg - это имя Xiph.org формат контейнера для аудио, видео и метаданные.

Vorbis Vorbis это имя конкретная схема сжатия звука это предназначено для содержания в Ogg. Обратите внимание, что другие форматы способен быть встроенным в Ogg такой как FLAC и Speex.

Я предполагаю, что теоретически возможно встроить MP3 в Ogg, хотя я не уверен, почему кто-то захочет. FLAC - это аудиокодек без потерь. Speex - аудиокодек с большими потерями, оптимизированный для кодирования речи. Vorbis - это аудиокодек с потерями общего пользования. «Ogg audio», следовательно, немного неправильное. Ogg Vorbis - это правильный термин для обозначения того, что я имею в виду.

Все это говорит, что если вы все еще хотите конвертировать из MP3 в Ogg Vorbis, вы можете (а) попробовать ссылку Freshmeat выше, (б) посмотреть другие ответы или (в) посмотреть FFmpeg. FFmpeg - это библиотека общего назначения для преобразования большого количества видео и аудио кодеков и форматов. Это может сделать много умных вещей. Я слышал, что его кодировщик Vorbis по умолчанию имеет низкое качество, но его можно настроить на использование libvorbis вместо встроенного кодировщика Vorbis. (Это последнее предложение может быть устаревшим. Я не знаю.)

Обратите внимание, что FFmpeg будет использовать LAME и libvorbis, как вы уже это делаете. Это не сделает для вас ничего нового. Это просто дает вам возможность делать все виды других преобразований тоже.

1 голос
/ 03 июня 2009

Foobar2000 (http://www.foobar2000.org/) бесплатен и позволяет довольно легко конвертировать файлы в разные форматы. Преобразование из MP3 в OGG займет всего несколько кликов.

Имейте в виду, что переход от формата с потерями к формату с потерями приведет к более низкому качеству звука, чем переход от формата без потерь (FLAC, CD Audio, Apple Lossless Codec) к формату с потерями (MP3, OGG, M4A). ). Если у вас есть доступ к источнику звука без потерь, используйте его для преобразования.

1 голос
/ 03 июня 2009

Вам нужно будет декодировать mp3, а затем кодировать в ogg.

Одна из возможностей - использовать liblame для декодирования mp3 и libogg / libvorbis для кодирования в ogg. Или просто используйте их версии для командной строки.

Но я бы не сказал, что переход с одного формата с потерями на другой - отличная идея.

0 голосов
/ 03 июня 2009

Конечно, вы можете сделать это в C ++ с помощью Windows Media Format SDK .

Я сам использовал только WMFSDK9. Он содержит образец под названием UncompAVIToWMV, который может помочь вам начать работу. Из файла Readme:

Показывает, как объединить образцы для аудио и видео потоки из нескольких AVI файлы и объединить их в похожие потоки или создать новый поток на основе профиля исходного потока. Это также показывает, как создать произвольный поток, сделать многопроходный кодирование и добавление временных кодов SMPTE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...