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