5

Merhaba arkadaşlar Azure blob'umdan bir ASP.NET MVC web uygulaması aracılığıyla bir videoyu masaüstü tarayıcılarındaki ve elbette mobil tarayıcılardaki kullanıcılara aktarmak istiyorum.MVC Mobil web tarayıcılarına video akışı

Şimdiye kadar oluşturduğum şey, web sitesine ve bir WebApi hizmeti veren bir ASP.NET MVC Uygulamasıdır. Bu, PushStreamContent olacaktır. Bu, masaüstündeki Chrome ve Edge'de harika çalışır. Ama ben bir mobil cihazda açmaya çalıştığımda, Chrome, Safari, Firefox sadece oynamayıp. Bugüne kadar

Benim Kodu:

MVC proje

<video id="vPlayer" class="video-js" autoplay controls playsinline preload="auto" data-setup='{"fluid": true}'poster="@ImgManager.GetVideoImgUrl(Model.ThumbnailUrl)"> 
<source src="//xyz.nl/api/Videos/Get?filename=340a85a3-ccea-4a2a-bab6-74def07e416c.webm&type=video%2Fwebm" type="video/webm"> 
<source src="//xyz.nl/api/Videos/Get?filename=340a85a3-ccea-4a2a-bab6-74def07e416c.mp4&type=video%2Fmp4" type="video/mp4"> 

public class VideoStream 
    { 
     private readonly string _filename; 

     public VideoStream(string fileName) 
     { 
      _filename = fileName; 
     } 



     public async Task WriteToStream(Stream outputStream, HttpContent content, TransportContext context) 
     { 
      try 
      { 
       var storage = new AzureMainStorage("avideo"); 
       byte[] file = await storage.GetFileAsync(_filename); 

       var buffer = new byte[65536]; 

       using (var video = new MemoryStream(file)) 
       { 
        var length = (int)video.Length; 
        var bytesRead = 1; 

        while (length > 0 && bytesRead > 0) 
        { 
         bytesRead = video.Read(buffer, 0, Math.Min(length, buffer.Length)); 
         await outputStream.WriteAsync(buffer, 0, bytesRead); 

         length -= bytesRead; 
        } 
       } 
      } 
      catch (HttpException ex) 
      { 
       Utilities.LogErrorToDb(ex); 
       return; 
      } 
      finally 
      { 
       outputStream.Close(); 
      } 

     } 

    } 
} 
WebAPI

üzerine WebAPI

public HttpResponseMessage Get(string filename, string type) 
     { 
      var video = new VideoStream(filename); 
      var response = Request.CreateResponse(); 

      response.Content = new PushStreamContent(video.WriteToStream, new MediaTypeHeaderValue(type)); 

      return response; 
     } 

Yardımcısı görünümü

cevap

1

Bir süre sonra, Microsoft cadıdan bu makaleye girdiğimde farklı şeyleri denedim, sorunumu mükemmel bir şekilde çözdüm. http://stackoverflow.com/questions/39834714/video-not-playing-on-ios10-chrome:

public HttpResponseMessage Get(string filename, string type) 
{ 
    MemoryStream stream = new MemoryStream(new AzureMainStorage("avideo").GetFile(filename)); 

    HttpResponseMessage partialResponse = Request.CreateResponse(HttpStatusCode.PartialContent); 
    partialResponse.Content = new ByteRangeStreamContent(stream, Request.Headers.Range, "video/mp4"); 
    return partialResponse; 
} 
+0

Ayrıca bu yararlı bağlantıyı kontrol edin: Burada

Link to article benim için çalıştı kodudur? answertab = eski # sekmesi üstü –