Объединить файлы MP3 в ответ ASP.NET? - PullRequest
0 голосов
/ 20 января 2010

РЕДАКТИРОВАТЬ: Ох ..... Я солгал! Командная строка не работает, если два исходных файла имеют разные битрейты (имеет ли значение частота дискретизации?). Кроме того, приведенный ниже исходный код успешно выполняется, когда два источника имеют одинаковую скорость передачи данных. Итак, теперь это похоже на битрейт. Хмм ....

Оригинальный вопрос:

result.mp3 (из командной строки ниже) воспроизводится в WMP11.

Приведенный ниже код ASP.NET обслуживает файл, который прекрасно воспроизводится в WMP11. Но когда я раскомментирую эти две строки, WMP11 не будет воспроизводить файл. Что-то в коде, объединяющем два файла MP3, не удовлетворяет требованиям WMP11.

Как я могу изменить код ASP.NET, чтобы объединить два MP3-файла в HTTP-ответе с успехом, который дает мне командная строка «copy»?

protected void Page_Load(object sender, EventArgs e) {
    Response.Clear();
    Response.ContentType = "audio/mpeg";
    Response.AddHeader("Content-Disposition", "attachment; filename=test.mp3");
    var bytes1 = System.IO.File.ReadAllBytes(@"C:\test1.mp3");
    WriteBytesToResponse(bytes1);
    //var bytes2 = System.IO.File.ReadAllBytes(@"C:\test2.mp3");
    //WriteBytesToResponse(bytes2);
    Response.End();
}

private void WriteBytesToResponse(byte[] sourceBytes) {
    using (var sourceStream = new MemoryStream(sourceBytes, false)) {
        sourceStream.WriteTo(Response.OutputStream);
    }
}

copy /B test1.mp3+test2.mp3 result.mp3

Ответы [ 2 ]

1 голос
/ 20 января 2010

Ответ на этот вопрос может вам помочь.

По сути, объект ответа не будет соединять файлы должным образом, поэтому вам нужно объединить их вручную, а затем отправить результат клиенту.

0 голосов
/ 20 января 2010

Мне кажется, проблема в том, что объект ответа не знает, как обрабатывать два файла одновременно.Когда вы прикрепляете файл к веб-ответу, он работает, исходя из предположения, что это будет только один файл.

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

Я даже не знаю, сможет ли браузер правильно обработать два файла в одном ответе .. скорее всего, нет.

...