Как упаковать аудиофайл OGG в контейнер RIFF?
У меня есть аудиофайл ogg и некоторая информация, которая сохраняется в виде последовательности байтов. Мне нужно упаковать это аудио и информацию в один контейнер, такой как RIFF или что-то еще. Я ищу решения, которые могут быть написаны под.NET.
2 ответа
Ogg - это контейнерный формат. Возможно, вам понадобится либо использовать некоторые инструменты формата Ogg, чтобы прикрепить ваши данные непосредственно к существующему файлу, либо перенаправить данные в другой формат контейнера, где у вас есть инструменты для прикрепления ваших данных.
Форматы могут быть WAV/RIFF, Matroska, MP4. Это также, возможно, зависит от того, что именно представляют собой эти дополнительные данные, скорее миниатюра или дополнительный поток (комментарии пользователей с метками времени и т. Д.).
Популярной платформой для таких манипуляций в.NET является библиотека DirectShow.NET, но, когда вы проясните свои потребности, вы можете в конечном итоге использовать другой инструмент.
См. Также соседний поток с фрагментом кода: кодирование Ogg to Riff/Wave с помощью acm
Как переместить файл Ogg в файл Wav с данными Ogg Vorbis в C#
static void OggToWavWithOgg()
{
string fileName = @"e:\Down\fortuna.ogg";
using (DsReader dr = new DsReader(fileName))
{
if (dr.HasAudio)
{
short oggFormatTag = 26479;
IntPtr format = dr.ReadFormat();
WaveFormat waveFormat = AudioCompressionManager.GetWaveFormat(format);
IntPtr formatOgg = AudioCompressionManager.GetCompatibleFormat(format, oggFormatTag);
using (WaveWriter ww = new WaveWriter(File.Create(fileName + ".wav"),
AudioCompressionManager.FormatBytes(formatOgg)))
{
AudioCompressionManager.Convert(dr, ww, true);
}
}
}
}