如何解决在所有浏览器 MVC 上从数据库在 HTML 视图上播放视频/音频
我正在做一个从 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",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 音频/视频的对象嵌入早已过时,取而代之的是 <audio>
和 <video>
元素。
你可以尝试这样的事情:
<video autoplay controls>
<source src="@Url.Action("FileToPlay","Home",new { CallRowID = Model.RowID })" type="video/mp4" />
</video>
(注意,您还需要填写正确的 MIME 类型。我在这里只是假设为 MP4。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。