2013-12-20 32 views
0

我在數據庫中存儲視頻。 控制器:來自數據庫的視頻

public ActionResult GetMp4(decimal subtaskId) 
    { 
     //var result = File(_subtaskService.GetById(subtaskId).VideoMP4, "video/mp4", "video.mp4"); 
     //return result; 

     var result = Json(_subtaskService.GetById(subtaskId).VideoMP4, "video/mp4", JsonRequestBehavior.AllowGet); 
     result.MaxJsonLength = int.MaxValue; 
     return result; 
    } 

_subtaskService.GetById(subtaskId).VideoMP4返回字節[]

的JavaScript

$(document).ready(function() { 
    var link; 

    $.getJSON("@Url.Action("GetMp4", new {subtaskId = Model.Id})", function (data) { 
     var blob = new Blob(data, { type: 'video/mp4' });    
     link = URL.createObjectURL(blob); 
     $('#srcmp4').attr('src', link); 
    }); 

HTML:

<video controls> 
<source type="video/ogg"/> 
<source id ="srcmp4" type="video/mp4"/> 
</video> 

我得到的數據和URL,但視頻不起作用。當我下載blob並重命名爲mp4文件時,它不起作用。我錯了什麼?

如果我這樣做: 控制器:

public ActionResult GetMp4(decimal subtaskId) 
    { 
     var result = File(_subtaskService.GetById(subtaskId).VideoMP4, "video/mp4", "video.mp4"); 
     return result;    
    } 

HTML:

<video preload ="metadata" controls>*@ 
<source type="video/ogg" src="@Url.Action("GetOgg", new {subtaskId = Model.Id})"/>*@ 
<source type="video/mp4" src="@Url.Action("GetMp4", new {subtaskId = Model.Id})"/>*@ 
</video> 

視頻作品,但時間表是錯誤的。

p.s. sory for my english

回答

1

您是以dataURI還是JSON的形式獲取數據?看起來如此,如果在blob之前使用dataURI或將AJAX請求鍵入爲ArrayBuffer,則需要將其轉換爲ArrayBuffer。