Как упаковать аудиофайл OGG в контейнер RIFF? - PullRequest
2 голосов
/ 30 сентября 2011

У меня есть аудиофайл ogg и некоторая информация, которая сохраняется в виде последовательности байтов. Мне нужно упаковать это аудио и информацию в один контейнер, такой как RIFF или что-то еще. Я ищу решения, которые могут быть написаны под .NET.

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

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

Форматы могут быть WAV / RIFF, Matroska, MP4. Это также, возможно, зависит от того, что именно представляют собой эти дополнительные данные, больше похоже на миниатюру или дополнительный поток (комментарии пользователей с метками времени и т. Д.).

Популярной платформой для таких манипуляций в .NET является библиотека DirectShow.NET, но по мере уточнения ваших потребностей вы можете использовать другой инструмент.

См. Также соседний поток с фрагментом кода: Кодирование Ogg to Riff / Wave с помощью acm

0 голосов
/ 10 апреля 2014

Как переместить файл 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);
                }
            }
        }
    }
...