【发布时间】: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