Fehler mit HTML5-Videos in Chrome, mit RangeFilePathResult

Mit MVC3-und flowplayer, ich habe ein video-player, der eingerichtet ist, um video-Dateien mit dem folgenden markup:

<div id="video">
    <div id="video-viewport">
      <!-- The data-ratio is a decimal number represeting the height of the video in proportion to the width -->
      <div class="flowplayer" data-swf="http://releases.flowplayer.org/5.1.1/flowplayer.swf"
        data-ratio="0.417" data-engine="html5" data-keyboard="true" data-native_ipad_fullscreen="true"
        data-volume="0.6">
        <video>
       <!-- By default Flowplayer attempts to use HTML5 video and if it's not
       supported then Flash (9.0+) and MP4 is used. MP4 is enough for
       complete browser support but providing WebM and/or OGG gives you
       broader support for HTML5 video which is the preferred technology. -->
     <!-- MP4 gives a complete cross browser support with the aid of Flash -->
     <source type="video/mp4" src="@Url.Action("GetVideo", "Video", new { id = Model.WebMp4Video.Id })"/>
     <!-- WEBM gives HTML5 video support for the latest Firefox, Chrome and Opera browser -->
      <source type="video/webm" src="@Url.Action("GetVideo", "Video", new { id = Model.WebMVideo.Id })"/> 
     <!-- OGG gives HTML5 support for older versions of Firefox and Opera -->
      <source type="video/ogv" src="@Url.Action("GetVideo", "Video", new { id = Model.OgvVideo.Id })"/> 
      </video>
      </div>
    </div>
  </div> <!--/video-->

In der Steuerung ich habe diese Methode Rücksendung der videos:

    public ActionResult GetVideo(string id) {
                ...
        var cd = new System.Net.Mime.ContentDisposition {
        Inline = false
    };
    FileInfo info = new FileInfo(path);
    Response.AppendHeader("Content-Disposition", cd.ToString());
    return new RangeFilePathResult(MimeType, info.FullName, info.LastWriteTimeUtc, info.Length); 
 }

RangeFilePathResult wurde ein Lebensretter bei der Rückkehr teilweise Antworten und das ganze funktioniert Prima in Firefox und IE, aber in Chrome-ich bin immer häufige Fehler:

"server nicht gesetzt-status nach dem http-Header gesendet wurden".

und der Spieler selbst stürzt, offenbart der folgende Fehler auf der Seite:

html5: Video nicht richtig codiert

Ich bin immer noch versuchen, um meinen Kopf um die teilweisen Antworten, aber dies könnte sein, weil die RangeFileResult setzt den status-code 206 mit jeder partial-response? Oder gibt es etwas, was ich hier vermisst?

Bearbeiten: Wenn ich die debug-durch die RangeFileResult code und auch überprüfen Sie die Netzwerk-tab in Chrome, merke ich, dass die Anfrage an die controller-Methode gibt die partial-response mit status pending, sobald der code trifft diese Zeile:

Kontext.HttpContext.Antwort.Flush();

es scheint eine Verzögerung, die auf dieser, manchmal mehr als 10 Sekunden, aber wenn dies abgeschlossen ist der status der response verwendet werden änderungen an 206. Oft, während das video abgespielt wird, obwohl, ist der status wieder geändert abgesagt und dies ist, wenn die

html5: Video nicht richtig codiert

Meldung erscheint auf dem video-player.

Edit2: Die repsonses ich erhalte sind wie folgt (3 Antworten, der erste und Dritte sind abgesagt, die zweite hat 206 status:

Anfrage

URL: http://localhost:64729/Video/GetVideo/24
Method: GET
Status Code: 206 Partial Content

Request-Header

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:identity;q=1, *;q=0
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:.ASPXAUTH=BD5B9748E6985F5659B56289A5543C11CACBF1602AFFD5D4335453560988B870F2543269809401D13EE9F12EFBAC2D4CE0322B5F826871B9968B3D2986C01E35C536B28B5EC24E8E4F631D094B0DBEFF76DA84DA7CCC753E06C38C0FA36A858AC87548099BD23D4BE9B80434970A542489EC5E5F4543A9C98CA573F196DCBFE1B8CC18C10AE1AFEB0E4E899C6CA4DEFC59138E170954016DCB9C007FDC7C2B2950436E24AA5FF9C0888822626C9AE01C07A98F317A9499F0E9D5E61434F959E9;ASP.NET_SessionId=o112vzki5owvbptr4kudbdax
Host:localhost:64729
Range:bytes=0-
Referer:http://localhost:64729/Video/Index/3
User-Agent:Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17

Antwort-Header

Cache-Control:private, s-maxage=0
Connection:Close
Content-Length:7362920
Content-Range:bytes 0-7362919/7362920
Content-Type:video/mp4
Date:Tue, 15 Jan 2013 12:55:24 GMT
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0

Anfrage

URL: http://localhost:64729/Video/GetVideo/24
Method: GET
Status Code: 206 Partial Content

Request-Header

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:identity;q=1, *;q=0
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:.ASPXAUTH=BD5B9748E6985F5659B56289A5543C11CACBF1602AFFD5D4335453560988B870F2543269809401D13EE9F12EFBAC2D4CE0322B5F826871B9968B3D2986C01E35C536B28B5EC24E8E4F631D094B0DBEFF76DA84DA7CCC753E06C38C0FA36A858AC87548099BD23D4BE9B80434970A542489EC5E5F4543A9C98CA573F196DCBFE1B8CC18C10AE1AFEB0E4E899C6CA4DEFC59138E170954016DCB9C007FDC7C2B2950436E24AA5FF9C0888822626C9AE01C07A98F317A9499F0E9D5E61434F959E9;ASP.NET_SessionId=o112vzki5owvbptr4kudbdax
Host:localhost:64729
Range:bytes=7339303-
Referer:http://localhost:64729/Video/Index/3
User-Agent:Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17

Antwort-Header

Cache-Control:private, s-maxage=0
Connection:Close
Content-Length:23617
Content-Range:bytes 7339303-7362919/7362920
Content-Type:video/mp4
Date:Tue, 15 Jan 2013 12:55:24 GMT
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0

Anfrage

URL: http://localhost:64729/Video/GetVideo/24
Method: GET
Status Code: 206 Partial Content

Request-Header

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:identity;q=1, *;q=0
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:.ASPXAUTH=BD5B9748E6985F5659B56289A5543C11CACBF1602AFFD5D4335453560988B870F2543269809401D13EE9F12EFBAC2D4CE0322B5F826871B9968B3D2986C01E35C536B28B5EC24E8E4F631D094B0DBEFF76DA84DA7CCC753E06C38C0FA36A858AC87548099BD23D4BE9B80434970A542489EC5E5F4543A9C98CA573F196DCBFE1B8CC18C10AE1AFEB0E4E899C6CA4DEFC59138E170954016DCB9C007FDC7C2B2950436E24AA5FF9C0888822626C9AE01C07A98F317A9499F0E9D5E61434F959E9;ASP.NET_SessionId=o112vzki5owvbptr4kudbdax 
Host:localhost:64729
Range:bytes=48-
Referer:http://localhost:64729/Video/Index/3
User-Agent:Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17

Antwort-Header

Cache-Control:private, s-maxage=0
Connection:Close
Content-Length:7362872
Content-Range:bytes 48-7362919/7362920
Content-Type:video/mp4
Date:Tue, 15 Jan 2013 12:55:24 GMT
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0
Bitte lassen Sie die Response.AppendHeader("Content-Disposition", cd.ToString()) und versuchen Sie es erneut (Sie sollten nicht brauchen "Content-Disposition" - header, wenn Sie streaming-video, und sicherlich sollte es nicht mit Inline = false). Andere als diese, ich sehe keinerlei Problem an dieser Stelle. Lassen Sie uns auch wissen, wie Sie Ihre video-Datei kodiert ist (nicht jeder Browser unterstützt alle Codierungen).
danke, werde ich geben diese einen Versuch
das problem bleibt das gleiche, wenn ich den code entfernen, den Sie erwähnt. Auch ich bin nicht mit jeder Codierung, die ich bin mir dessen bewusst, was wäre denn der Standard?
Sie müssen irgendeine Art der Kodierung (encoding ist das format, in dem die video-Datei erstellt wurde). Die drei wichtigsten sind MPEG-4 (H. 264), WebM (VP8), OGG (Theora) und es erfordert in der Regel mehr als ein format, wenn Sie möchten, um alle Browser. Sie können mehr darüber Lesen Sie hier: drupal.org/node/1565532 (der Artikel enthält auch Beispielcode richtig codierte Dateien für Testzwecke).
Oh sorry, ich nutze FFMpeg, um erstellen Sie ein MP4, WebM und Ogv video für jedes hochgeladene video, so dass jedes dieser Formate wird auf meiner video-Seite.

InformationsquelleAutor DevDave | 2013-01-15

Schreibe einen Kommentar