如何在ASP.NET + C#中裁剪mp3?

3

我正在一个使用C#的ASP.NET项目中。用户可以上传他们的MP3(我无法控制编码),并指定样本大小和样本起始点。在保存时,系统需要根据提供的信息创建此MP3的样本。

所以问题是:如何在ASP.NET + C#中裁剪mp3?

2个回答

3
虽然您可以使用.NET音频库来完成此操作,但我认为最简单的方法是运行像FFMpegMPlayer这样的命令来为您裁剪,然后将文件发送回线路。例如,使用FFMpeg,您可以执行以下操作(从此处开始裁剪到第90秒):
ffmpeg -ss 90 -i input.mp3 output.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有多复杂? - marcgg
你需要做的主要事情是下载 ffmpeg.exe 并将其放在一个方便的文件夹中。然后,只需将示例中的 ffmpeg.exe 替换为您放置 EXE 的路径即可。它基本上是一个 EXE 和一个 DLL。最大的问题实际上是获取正确的命令行参数,因为 FFMpeg 是一个非常庞大的程序 - 当我使用它时,我花了很多时间查看手册页。 - Lucas Jones
它起作用了,谢谢。我遇到了一些问题,在这里得到了解决:https://dev59.com/hHM_5IYBdhLWcg3waSX9 https://dev59.com/eHM_5IYBdhLWcg3waSX9 - marcgg
太好了。我觉得那个问题有点熟悉... :D - Lucas Jones

0

你可以使用MP3帧头来分割文件。 通过简单的暴力搜索,你可以将文件分割成单独的帧,并创建一个新的MP3文件,其长度可以任意设置。

MP3格式


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接