我将视频存储在数据库中。 控制器:
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返回byte []
的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>
我获取数据和网址,但视频不起作用。当我下载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
答案 0 :(得分:1)
您是将数据作为dataURI还是JSON获取?看来是这样,如果是dataURI,你需要将它转换为ArrayBuffer,或者在blob之前将AJAX请求输入为ArrayBuffer。