HTML5 - 大きな.mp4ファイルをストリーミングする方法



0 Answers

ここでは、Byte Ranges(部分的な要求)でビデオファイルを提供するC#(MVC)でWeb APIコントローラを作成するために使用したソリューションを示します。 部分的な要求により、ブラウザは、ビデオ全体をダウンロードするのではなく、再生する必要があるだけの量のビデオをダウンロードすることができます。 これははるかに効率的になります。

これは最近のバージョンでのみ機能することに注意してください。

var stream = new FileStream(videoFilename, FileMode.Open, FileAccess.Read , FileShare.Read);

var mediaType = MediaTypeHeaderValue.Parse($"video/{videoFormat}");

if (Request.Headers.Range != null)
{
    try
    {
        var partialResponse = Request.CreateResponse(HttpStatusCode.PartialContent);
        partialResponse.Content = new ByteRangeStreamContent(stream, Request.Headers.Range, mediaType);

        return partialResponse;
    }
    catch (InvalidByteRangeException invalidByteRangeException)
    {
        return Request.CreateErrorResponse(invalidByteRangeException);
    }
}
else
{
    // If it is not a range request we just send the whole thing as normal
    var fullResponse = Request.CreateResponse(HttpStatusCode.OK);

    fullResponse.Content = new StreamContent(stream);
    fullResponse.Content.Headers.ContentType = mediaType;

    return fullResponse;
}
Question

私は20MBの.mp4ビデオを読み込む非常に基本的なhtml5ページをセットアップしようとしています。 ブラウザーはビデオの最初の部分を再生し、残りの部分をストリーミングするのではなく、全体をダウンロードする必要があるようです。

このポストは、私が探していたときに見つけた最も近いものです...私はハンドブレーキとデータ・ラウンドの両方を試みましたが、違いを生み出すことはできませんでした:

どのようにこれを行うか、それが可能な場合、任意のアイデアですか?

私が使用しているコードは次のとおりです:

<video controls="controls">
    <source src="/video.mp4" type="video/mp4" />
    Your browser does not support the video tag.
</video>



Related