Существует ли библиотека.NET для универсального декодирования звукового файла?

Я бы, вероятно, не использовал Рамду для этого. Обратите внимание, что я один из основателей Ramda и большой поклонник. Но Рамда предназначена для функционального программирования. Одним из главных принципов функционального программирования является использование чистых функций, которые не используют входные данные вне своих аргументов и не имеют никаких эффектов, кроме как для возврата значения. Для одного и того же входа они должны всегда возвращать один и тот же результат. Это не будет работать, когда код должен что-то делать случайным образом. 1 sup>

Вы можете использовать код, подобный тому, что делает для этого lodash, версия с ранним возвратом Fisher -Yates shuffle или вы можете использовать что-то подобное, что также сохраняет свои результаты в порядке, указанном в исходном массиве:

const sampleSize = (size, list, collected = []) => size < 1 || list.length < 1
  ? collected
  : size >= list.length
    ? [...collected, ...list] // or throw error?
    : Math.random() < size / list.length
      ? sampleSize(size -1, list.slice(1), [...collected, list[0]])
      : sampleSize(size, list.slice(1), collected)

console.log(sampleSize(4, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
console.log(sampleSize(4, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
console.log(sampleSize(4, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))

console.log(sampleSize(0, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
console.log(sampleSize(10, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
console.log(sampleSize(20, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))

[ 117]

Это было написано на скорую руку, и может иметь ошибки, но это должно быть довольно близко. Идея состоит в том, чтобы проверять каждый элемент по одному, чтобы увидеть, должен ли он быть включен, корректируя шанс в зависимости от того, сколько осталось включить и сколько осталось в списке.

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


1 sup> Обратите внимание, что в какой-то момент у Рамды действительно было расширение случайных чисел , но это давно отброшено. Он использовал воспроизводимый генератор псевдослучайных чисел, который звучит почти как оксюморон, но имеет смысл при работе с чистыми функциями.

8
задан hangy 27 September 2008 в 15:54
поделиться

4 ответа

Существует ffmpeg библиотека и утилиты, который преобразовывает форматы аудио и форматы видео. Затем свяжитесь с библиотекой FFmpeg.NET, можно сделать кодирование/декодирование в.NET. Все форматы, которые Вы упомянули, поддерживаются.

3
ответ дан 6 December 2019 в 00:09
поделиться

FMOD Исключая аудиосистемой является революционно новым аудио механизмом для разработчиков игр, мультимедийных разработчиков, звукорежиссеров, музыкантов и звукоинженеров. На основе лет опыта от предыдущих продуктов Firelight Technologies, FMOD Исключая целями требовать у возможностей аудио для игр, одновременно используя минимальные ресурсы и оставаясь полностью масштабируемым.

FMOD некоммерческая лицензия

Если Ваш продукт не предназначается для коммерческого усиления и не включает библиотеку FMOD для перепродажи, лицензии или другого коммерческого распределения, то использование FMOD является бесплатным. Да правильно, лишенный лицензионных сборов!.

1
ответ дан 6 December 2019 в 00:09
поделиться

Если бы Вы говорите о декодировании файлов для проигрывания их (т.е. для слушания), я предложил бы вскочить в SDK Windows Media Player.

Это будет играть что-либо, чему установили кодек и ничего не стоит.

http://msdn.microsoft.com/en-us/library/aa969732.aspx

Если Вы хотите что-то ближе к металлу (т.е. для изучения), Вы могли бы также проверить SDK Windows Media Format.

http://msdn.microsoft.com/en-us/library/aa387410.aspx

0
ответ дан 6 December 2019 в 00:09
поделиться

Alvas. Аудио является единственным продуктом, я когда-либо видел, что это делает это (и я только узнал об этом из этого сообщения). Я думаю, что ситуация с лицензированием с MP3s препятствовала разработке продуктов.NET, которые делают это.

0
ответ дан 6 December 2019 в 00:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: