Как упаковать аудиофайл 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);
                }
            }
        }
    }
Другие вопросы по тегам