2016-06-21 11 views
0

Ich versuche eine Ansicht zu erstellen, die mehrere Trainingsvideos anzeigt. Während ich den folgenden Code einmal zum arbeiten bekomme, bekomme ich jetzt nur noch schwarze Videoframes.ASP.Net MVC - So betten Sie mehrere Videos in einer Ansicht ein

Mein Videocontroller:

public ActionResult GetVideo() 
    { 
     var videoPath = 
      Request.MapPath("~/Content/videoFile/IQ3612 Benefits.mp4"); 
     FileStream fs = 
      new FileStream(videoPath, FileMode.Open); 
     return new FileStreamResult(fs, "video/mp4"); 
    } 

    public ActionResult GetVideo2() 
    { 
     var videoPath2 = 
      Request.MapPath("~/Content/videoFile/IQ3612 Technical.mp4"); 
     FileStream fs2 = 
      new FileStream(videoPath2, FileMode.Open); 
     return new FileStreamResult(fs2, "video/mp4"); 
    } 

Meine Ansicht:

<body> 
<h1>Training Video Index</h1> 
<div> 
    <video width="320" height="240" controls="controls" > 
     <source src="@Url.Action("GetVideo","Video")" type="video/mp4"> 
    </video> 
</div> 
<div></div> 
<div> 
    <video width="320" height="240" controls="controls"> 
     <source src="@Url.Action("GetVideo2","Video")" type="video/mp4"> 
    </video> 
</div> 

+0

Warum nicht einfach nur direkt auf die Datei verlinken? Vielleicht haben Sie Ihren Code hier wegen der Frage vereinfacht, aber so wie er ist, fügen Sie lediglich einen Overhead zu der Anfrage hinzu. Das heißt, ich glaube nicht, dass das hier Ihr Problem ist, aber es ist ein Schritt in die richtige Richtung. –

+0

Aus meiner Sicht muss eine Datei Dampf verwendet werden. '

' funktioniert nicht. –

+0

Umm. Nein. So oder so "streamt" es nicht, wenn du das denkst. Ich meine in einem Sinne alles über HTTP "Streams", weil es in Paketen heruntergeladen wird. Wenn das Video-Meta von vorne geladen wird, kann der Browser es abspielen, bevor es fertig heruntergeladen ist, aber es ist nicht adaptiv (Streaming im Sinne von Netflix oder eines YouTube-Videos). Ich bin mir nicht sicher, was du mit "funktioniert nicht" meintest, aber der einzige Grund, direkt zu verlinken, würde nicht funktionieren, wenn der Pfad der Datei falsch ist. –

Antwort

0

Bitte überprüfen Sie, ob der MIME-Typ für das MP4-Format korrekt in Ihrer web.config Datei festgelegt wird.

<system.webServer> 
<staticContent> 
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" /> 
</staticContent> 
</system.webServer> 
+0

Ich hatte dies nicht in meiner web.config. Ich habe es hinzugefügt, aber meine Videos funktionieren immer noch nicht. –

+0

@Kram_Koorbse Bitte überprüfen Sie das gerenderte HTML, um zu sehen, ob '@ Url.Action (" GetVideo "," Video ")' einen gültigen Pfad generiert. Dies kann an einer ungültigen oder nicht vorhandenen Video-URL liegen - Ihr MapPath gibt leer oder null zurück –

+0

Ich habe überprüft und kann bestätigen, dass es einen gültigen Pfad zurückgibt. Wenn ich nur ein Video habe, wird das Video abgespielt. Wenn ich versuche, zwei Videos aus meiner Sicht zu haben, wie ich es in meinem Beitrag zeige, dann wird kein Video abgespielt. –

0

Während ich den folgenden Code bekommen habe einmal zu arbeiten, habe ich jetzt nur schwarz Video-Frames.

Haben sich die Dateipfade seit dem letzten Funktionstest geändert? Sie sollten keine Leerzeichen in Dateinamen haben, die als Web-URLs verwendet werden. Zum Beispiel: IQ3612 Benefits.mp4 sollte IQ3612_Benefits.mp4 sein (hier mit Unterstreichung, oder verwenden Sie Bindestriche oder Fullstops).

Die endgültige URL: ~/Content/videoFile/IQ3612_Benefits.mp4.

Versuchen Sie auch so direkt wie möglich. Dies bedeutet, dass Sie Ihre Datei auf einen Server legen und direkt mit ihnen verlinken müssen. Versuchen Sie anstelle von Tilde ~ HTTP-Version ../Content/videoFile/IQ3612_Benefits.mp4, aber eine direkte Verbindung wie http://www.mysite/Content/videoFile/IQ3612_Benefits.mp4 würde am besten funktionieren.