0

トリミングされた mp4 ビデオ ファイルを返す ASP ハンドラーを作成する必要があります。ファイル名、開始時間、終了時間を指定します。

現在、ビデオ ファイル全体を返すハンドラしかありません。問題は、それをどのように切り刻むかです。

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 に答える