如何从asp.net网页表单的下拉列表中选择视频来加载视频

本文关键字:视频 下拉列表 选择 加载 表单 asp net 网页 | 更新日期: 2023-09-27 18:26:33

我有一个下拉列表,其中包含一个没有文件扩展名的视频名称列表。我还有一个嵌入式HTML5视频播放器。目前,视频播放器是用Uploads文件夹中的视频进行硬编码的。我想将下拉列表中的视频名称传递给视频播放器,以便它加载选定的视频。每个视频都有三种支持的格式(mp4、ogv和webm)。我只想将不带文件扩展名的视频名称传递给3种视频格式中的每一种。加载的视频将取决于用户浏览器支持什么,首先尝试Mp4,然后是ogv,最后是webm。我还有一个脚本,如果用户浏览器不支持主要的3种格式,它将加载.flv视频。

提前感谢您的帮助。

这是我的下拉列表和视频播放器代码:

<div>
  <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>
  <asp:LinqDataSource ID="LinqDataSource1" runat="server" EntityTypeName="">
  </asp:LinqDataSource>
</div>
<div id='media-player'>
  <video id='media-video' controls>
    <source src="Uploads/Changing Master Key.Mp4" type='video/Mp4'>
    <source src="Uploads/Changing Master Key.webm" type='video/webm'>
    <source src="Uploads/Changing Master Key.ogv" type='video/ogv'>
  </video>
</div>

这是我的下拉列表代码:

  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      string[] filePaths = Directory.GetFiles(Server.MapPath("~/Uploads/"));
      Dictionary<string, string> filenames = new Dictionary<string, string>();
      foreach (string filePath in filePaths)
      {
        var file_name_without_extension = Path.GetFileNameWithoutExtension(filePath);
        if (filenames.ContainsKey(file_name_without_extension))
          continue;
        filenames.Add(file_name_without_extension, filePath);
      }
      List<ListItem> files = filenames.Select(x => new ListItem(x.Key, x.Value)).ToList();
      DropDownList1.DataSource = files;
      DropDownList1.DataTextField = "";
      DropDownList1.DataValueField = "";
      DropDownList1.DataBind();
    }
  }

我已经根据以下Khazratbek的建议更新了我的代码。

  protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
  {
    string YourFilePathWithFileName = DropDownList1.SelectedValue;
    media_video.Attributes.Add("src", "/Uploads/" + YourFilePathWithFileName + ".mp4");
    media_video.Attributes.Add("type", "video/mp4");
    media_video.Attributes.Add("autoplay", "autoplay");
    media_video.Attributes.Add("src", "/Uploads/" + YourFilePathWithFileName + ".ogv");
    media_video.Attributes.Add("type", "video/ogv");
    media_video.Attributes.Add("autoplay", "autoplay");
    media_video.Attributes.Add("src", "/Uploads/" + YourFilePathWithFileName + ".webm");
    media_video.Attributes.Add("type", "video/webm");
    media_video.Attributes.Add("autoplay", "autoplay");
  }

如何从asp.net网页表单的下拉列表中选择视频来加载视频

我可以采用一种方法。

<div>
  <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>
  <asp:LinqDataSource ID="LinqDataSource1" runat="server" EntityTypeName="">
  </asp:LinqDataSource>
</div>
<div id="media-player">
  <video id="media_video" runat="server" controls>
  </video>
</div>

以及您的SelectedIndexChanged方法:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    media_video.Attributes.Add("src", YourFilePathWithFileName);
    media_video.Attributes.Add("type", "video/mp4");
    media_video.Attributes.Add("autoplay", "autoplay");
}

希望它能帮助

您可以在下拉的更改事件中使用jquery将文件名注入视频播放器

创建一个Web方法,该方法将在下拉列表的更改事件时传递文件名。将webmethod调用为jquery ajax调用,获取文件名并将其注入视频播放器控件