【问题标题】:Play Video/Audio on HTML View from Database on all Browser MVC在所有浏览器 MVC 上的数据库中播放 HTML 视图上的视频/音频
【发布时间】:2021-02-03 10:50:22
【问题描述】:

我正在做一个从 varbinary(max) 数据库中检索音频/视频的项目。我已经有一个可以从数据库播放音频/视频的代码,但它只适用于 IE。但如果可能的话,我想让这个 mvc 项目能够在所有浏览器上播放视频/音频。

这是视图上的代码:

 <object id="mediaplayer" classid="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#version=5,1,52,701" standby="loading microsoft windows media player components..." type="application/x-oleobject" width="320" height="310">
                    <param name="filename" value="@Url.Action("FileToPlay","Home", new { CallRowID = Model.RowID })">
                    <param name="animationatstart" value="true">
                    <param name="transparentatstart" value="true">
                    <param name="autostart" value="true">
                    <param name="showcontrols" value="true">
                    <param name="ShowStatusBar" value="true">
                    <param name="windowlessvideo" value="true">
                    <embed src="@Url.Action("FileToPlay","Home", new { CallRowID = Model.RowID })" autostart="true" showcontrols="true" showstatusbar="1" bgcolor="white" width="320" height="310" />
                </object>

控制器上的代码

        public ActionResult FileToPlay(string CallRowID)
        {
            Guid callguid = Guid.Parse(CallRowID);

            byte[] bytes;
            string contentType;
            string strConnString = ConfigurationManager.ConnectionStrings["DefaultContext"].ConnectionString;
            string name;
            using (SqlConnection con = new SqlConnection(strConnString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.CommandText = "select Top 1 * from FileTable where RowID=@Id";
                    cmd.Parameters.AddWithValue("@Id", callguid);
                    cmd.Connection = con;
                    con.Open();
                    SqlDataReader sdr = cmd.ExecuteReader();
                    sdr.Read();
                    bytes = (byte[])sdr["VideoByte"];
                    contentType = sdr["VideoMimeType"].ToString();
                    name = sdr["VideoFileName"].ToString();
                    con.Close();
                }
            }

            var memorystream = new MemoryStream(bytes);
            return new FileStreamResult(memorystream, contentType);
        }

【问题讨论】:

    标签: html model-view-controller video-streaming audio-streaming


    【解决方案1】:

    HTML 音频/视频的对象嵌入早已过时,取而代之的是 &lt;audio&gt;&lt;video&gt; 元素。

    你可以试试这样的:

    <video autoplay controls>
      <source src="@Url.Action("FileToPlay","Home", new { CallRowID = Model.RowID })" type="video/mp4" />
    </video>
    

    (注意,您还需要填写正确的 MIME 类型。我这里假设为 MP4。)

    【讨论】:

      猜你喜欢
      • 2021-05-15
      • 2015-07-17
      • 2012-09-20
      • 1970-01-01
      • 2018-08-29
      • 2010-09-10
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      相关资源
      最近更新 更多