在我的网站上显示多种格式的视频,这些视频存储在共享文件夹

时间:2017-08-26 10:16:27

标签: c# html asp.net

我要求用户上传不同格式的视频,其中包括(.mp4,.flv,.mov,.wmv,.avi,.mp3),我们需要在一个页面中显示所有不同类型的视频。将用户上传的文件存储在应用程序旁边(共享路径)。我正在使用html5视频标记动态显示视频。

以下代码用于显示视频

string contentType = "", extension = "";
if (dtrow["extension"].ToString() == ".mp4")
{
contentType = "data:video/mp4;base64,";
extension = dtrow["extension"].ToString().Replace(".", "");
}
if (dtrow["extension"].ToString() == ".avi")
{
contentType = "data:video/avi;base64,";
extension = dtrow["extension"].ToString().Replace(".", "");
}
if (dtrow["extension"].ToString() == ".flv")
{
contentType = "data:video/flv;base64,";
extension = dtrow["extension"].ToString().Replace(".", "");
}


HtmlGenericControl fileDiv = new HtmlGenericControl("div");                               

fileDiv.ID = "fileDivVideo" + i + j;
fileDiv.Attributes.Add("Class", "row-fluid data-fields noPrint");
fileDiv.Attributes.Add("Style", "margin-top:20px;margin-bottom:20px");
HtmlGenericControl Video = new HtmlGenericControl("Video");
Video.ID = "Video" + i + j;
Video.InnerText = dtrow["Name"].ToString();
byte[] bytes = System.IO.File.ReadAllBytes(dtrow["videoPah"].ToString());
string base64String = contentType + Convert.ToBase64String(bytes, 0, 
bytes.Length);
Video.Attributes.Add("src", base64String);
Video.Attributes.Add("style", "height:300px;width:100%");
Video.Attributes.Add("type", "video/" + extension);
Video.Attributes.Add("controls", "controls");
fileDiv.Controls.Add(Video);
DocsDiv.Controls.Add(fileDiv);

我遇到以下问题

  1. 仅显示mp4视频,并显示剩余的空白区域。
  2. 当需要显示更多视频时,页面加载会耗费大量时间。
  3. 我可以直接显示路径中的文件(共享路径不是来自应用程序目录),而不管将视频作为字节读取。
  4. 请帮帮我。

1 个答案:

答案 0 :(得分:0)

您可以使用html5视频的默认方式,而不是使用视频文件的字节数组。替换这部分代码:

byte[] bytes = System.IO.File.ReadAllBytes(dtrow["videoPah"].ToString());
string base64String = contentType + Convert.ToBase64String(bytes, 0, 
 bytes.Length);
Video.Attributes.Add("src", base64String);

到此:

HtmlGenericControl source = new HtmlGenericControl("source");
source.Attributes.Add("src", THE_FILE_ADDRESS);
source.Attributes.Add("type", "video/" + VIDEO_TYPE);
Video.Controls.Add(source);