【发布时间】:2010-11-26 02:06:20
【问题描述】:
我在一个使用 C# 的 ASP.NET 项目中。用户可以上传他们的 MP3(我无法控制编码)并指定样本大小和样本起点。保存时,系统需要根据提供的信息创建此 MP3 的样本。
所以问题是:如何在 ASP.NET + C# 中裁剪 mp3??
【问题讨论】:
我在一个使用 C# 的 ASP.NET 项目中。用户可以上传他们的 MP3(我无法控制编码)并指定样本大小和样本起点。保存时,系统需要根据提供的信息创建此 MP3 的样本。
所以问题是:如何在 ASP.NET + C# 中裁剪 mp3??
【问题讨论】:
虽然您可以使用 .NET 音频库来执行此操作,但我认为最简单的方法是运行类似 FFMpeg 或 MPlayer 的命令为您进行裁剪,然后发送文件退后一步。
例如,使用 FFMpeg,您可以执行以下操作(从 here 裁剪到第 90 秒):
ffmpeg -ss 90 -i 输入.mp3 输出.mp3要启动 FFMpeg,请使用以下代码:
System.Diagnostics.Process p = new System.Diagnostics.Process();
Response.Write("Cutting MP3...");
Response.Flush();
p.StartInfo = new System.Diagnostics.ProcessStartInfo("ffmpeg.exe", "-s 90 -i " + inputFile + " " + outputFile);
p.Start();
p.WaitForExit();
Response.Write("Done");
唯一的问题是它需要很长时间,而且很难向用户报告进度。
【讨论】:
ffmpeg.exe 并将其放在某个方便的文件夹中。然后只需将示例中的ffmpeg.exe 替换为您放置EXE 的路径即可。它基本上是一个 EXE,IIRC 是一个 DLL。最大的问题实际上是获取正确的命令行参数,因为 FFMpeg 是一个 huge 程序 - 当我使用它时,我花了很多时间浏览手册页。
您可以使用 MP3 帧头分割文件。 使用简单的蛮力搜索,您可以将文件拆分为单独的帧并创建一个新的 MP3,只要您愿意。
【讨论】: