Как сжать речевой поток в silverlight - PullRequest
0 голосов
/ 09 декабря 2010

Я записал аудио с использованием silverligh4 и пытаюсь сохранить его через службу на сервере.Проблема записана. WAV файл имеет сотни байтов данных в виде потока.Но когда этот поток передается на обслуживание, его передача передается как максимум 1526 байт.Я установил максимальные свойства в web.config.Я думаю, что нам нужно кодировать поток на клиенте, передавать этот кодированный поток и декодировать его на сервере.Как кодировать аудиопоток в приложении Sileverlight и декодировать его на сервере?Пожалуйста, посоветуйте мне.Спасибо за ваше время.Nspeex или CSpeex не работают для меня.Если кто-то реализовал то же самое, пожалуйста, предложите, как это сделать?

Ответы [ 2 ]

1 голос
/ 22 декабря 2010

Единственный способ сжать WAV до любого разумного размера (без качества торговли) - это преобразовать его в другой формат.

Я не знаю, подходит ли вам этот вариант, но было бы очень легко использовать lame.exe для преобразования в MP3 перед отправкой на сервер.Конечно, вам нужно убедиться, что лицензирование позволяет распространять ваше приложение.

Вот программа с открытым исходным кодом для преобразования MP3 в WAV: http://www.codeproject.com/KB/audio-video/madlldlib.aspx

конвертировать в MP3, вы можете конвертировать MP3 в WAV с использованием lame, также используя опцию --decompress.

using System.Diagnostics;

public string WAV2MP3(string fileName, bool waitFlag) {

    string newFileName = fullpathDir + fileName.Replace(".wav",".mp3");
    string lameArgs = "-b 32 --resample 22.05 -m m \"" + 
        fullpathDir + fileName + "\" \"" + 
        newFileName + "\"";

    ProcessStartInfo processInfo = new ProcessStartInfo();

    Arguments = lameArgs;
    WindowStyle = ProcessWindowStyle.Hidden;
    WorkingDirectory = Application.StartupPath;

    Process startedProcess = new Process.Start(processInfo);

    if (waitFlag) {
      startedProcess.WaitForExit();
    }
    return newFileName;

};
0 голосов
/ 22 декабря 2010

Я бы, вероятно, просто взял необработанный аудиопоток, сэмплировал его с низкой скоростью и отправил бы через сжатый поток.Если вы хотите получить фантазию, вы можете передать сжатие в MP3-кодировщик, такой как LAME (в отдельном потоке / процессе!).

...