数据库中的视频

时间:2013-12-20 05:24:39

标签: javascript asp.net-mvc html5 video html5-video

我将视频存储在数据库中。 控制器:

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

1 个答案:

答案 0 :(得分:1)

您是将数据作为dataURI还是JSON获取?看来是这样,如果是dataURI,你需要将它转换为ArrayBuffer,或者在blob之前将AJAX请求输入为ArrayBuffer。