0

我需要编写一个 ASP 处理程序,它将返回一个修剪过的 mp4 视频文件。我将指定文件名、开始时间和结束时间。

现在我只有返回整个视频文件的处理程序。问题是如何将其切成碎片。

public void ProcessRequest(HttpContext context)
{
    fileName = context.Request.QueryString["filename"];
    start = float.Parse(context.Request.QueryString["start"]);
    end = float.Parse(context.Request.QueryString["end"]);

    context.Response.ContentType = "video/mp4";
    context.Response.WriteFile("~/videofile.mp4");
}

我已经阅读了一些关于 MP4 文件、标题等的主题,但这并不容易。如果我找到一种方法来计算单个帧的字节数。但是如何使用可变比特率来做到这一点?

4

2 回答 2

0

如果您可以运行系统命令来运行命令行实用程序(如 ffmpeg)为您剪切文件。这是最简单的方法。

 ffmpeg -i input-file -ss <start time> -t <duration>  -acodec copy -vcodec copy out.mp4 

否则,以编程方式修剪 mp4 太麻烦了。让ffmpeg为你做。

于 2012-08-27T19:42:32.187 回答
0

我设法使用基于 MediaInfo 获取的元数据的简单计算来复制文件的某些部分。

我复制整个标题,然后复制部分视频和音频流。但这仅在我从视频开头开始时才有效。当我希望它在 2 秒后启动时,文件已完全损坏。

此外,标头元数据表明它仍然是原始持续时间,即使它只有 4 秒。

寻找也相当不准确。视频比应有的时间长约 10%。

也许有一些方法可以在流中找到搜索点?

于 2012-08-28T10:32:53.753 回答