编辑:哦.....我撒了!如果两个源文件具有不同的比特率,命令行会失败(samplerate是否重要?)。此外,当两个源具有相同的比特率时,下面的源代码成功。所以,这看起来像是一个比特率的挑战。 HRM ....
原始问题:
result.mp3(来自下面的命令行)可以在WMP11中播放。
下面的ASP.NET代码提供了一个在WMP11中可以正常运行的文件。但是,当我取消注释这两行时,WMP11将不会播放该文件。关于合并两个MP3文件的代码的某些内容并不令WMP11满意。
如何更改ASP.NET代码以合并HTTP响应中的两个MP3以及'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
答案 0 :(得分:1)
this问题的答案可能会对您有所帮助。
基本上,响应对象不会正确连接文件,因此您需要手动连接它们,然后将结果发送给客户端。
答案 1 :(得分:0)
我认为问题是响应对象并不真正知道如何一次处理两个文件。当您将文件附加到Web响应时,它正在假设它只是一个文件。
一次提供这两个文件的更好解决方案可能是将它们压缩/ tar到一个文件中,然后将其作为附件发送。
我甚至不知道浏览器是否能够在一个响应中正确处理两个文件。可能不是。