【问题标题】:How to display video from JSON?如何显示来自 JSON 的视频?
【发布时间】:2019-06-17 22:00:38
【问题描述】:

我有一个简单的应用程序,其中包含来自 JSON 数组的视频下拉列表,

JSON 数据包含,标题,id,按钮,位置,URL

我希望用户从类似这样的下拉列表中选择一个视频

所以如果用户选择例如从下拉列表中旅行,它应该显示一个旅行视频,其中包含类似这样的按钮,

到目前为止,这是我尝试过的

HTML

<div class="showme"> Show dropdown
  <select id="movies-container">
     <option value="" selected disabled hidden>Choose here</option>
  </select>
</div>
<video src="" id="video">
      results goes here
    </video>

js

function PopulateDropDownList() {
           //Build an array containing movies records.

            var movies = [
              {
                "title": "travel",
                "left": 201,
                "top": 209,
                "movieid": "10",
                "movie_url": "http://techslides.com/demos/sample-videos/small.mp4",
                "buttons": [
                  {
                    "left": 81,
                    "top": 51,
                    "start_time": 1,
                    "end_time": 2,
                    "buttonid": "10_1",
                    "btn_url": "http://techslides.com/demos/sample-videos/small.mp4"
                  }
                ]
              }
            ]

            var movieContainerID = document.getElementById("movies-container");


            //Add the Options to the DropDownList.
            for (var i = 0; i < movies.length; i++) {
                var option = document.createElement("OPTION");
                    console.log(movies[i]);


                    // movieContainerID.prop('selectedIndex', 0);
                //Set movie Name in Text part.
                option.innerHTML = movies[i].title;

                //Set movieId in Value part.
                option.value = movies[i].movieid;

                //Add the Option element to DropDownList.
                movieContainerID.options.add(option);
            }
        }
        $('.showme').on('click', function(){
             $('#movies-container').addClass('show');
              PopulateDropDownList();

       });

这是我正在研究的 js fiddle:live demo

我需要做什么才能得到我想要的?到目前为止我卡住了,任何帮助或建议将不胜感激。

【问题讨论】:

    标签: javascript jquery html json html5-video


    【解决方案1】:

    你有很多工作要做。不清楚你想用这些按钮“做什么”,你没有它们的内容或动作。所以我暂时不打算解决这个问题。

    关于 Select,以下是我工作的基础:

    • 在更改时,使用选择从数据源获取更多详细信息
    • 创建了一个 &lt;video&gt; 容器或从选择中更新一个

    这是一个工作示例:https://jsfiddle.net/Twisty/Lb7eh3zc/31/

    HTML

    <div class="showme"> Show dropdown
      <select id="movies-container">
        <option value="" selected disabled hidden>Choose here</option>
      </select>
    </div>
    <video id="show-video" style="display:none;"></video>
    

    JavaScript

    $(function() {
      var movies = [{
        "title": "travel",
        "left": 201,
        "top": 209,
        "movieid": "10",
        "movie_url": "http://techslides.com/demos/sample-videos/small.mp4",
        "buttons": [{
          "left": 81,
          "top": 51,
          "start_time": 1,
          "end_time": 2,
          "buttonid": "10_1",
          "btn_url": "http://techslides.com/demos/sample-videos/small.mp4"
        }]
      }];
    
      function PopulateDropDownList() {
        var movieContainerID = $("#movies-container");
    
        //Add the Options to the DropDownList.
        $.each(movies, function(k, v) {
          console.log(v);
          var option = $("<option>", {
            value: v.movieid
          }).html(v.title).appendTo(movieContainerID);
        });
    
        movieContainerID.change(function() {
          var movieid = $("option:selected").val();
          var movie = getMovie(movieid);
          $("#show-video").attr({
            src: movie.movie_url,
            controls: "controls",
            type: "video/mp4"
          }).show();
        });
      }
    
      function getMovie(id) {
        var m = false;
        $.each(movies, function(k, v) {
          if (v.movieid == id) {
            m = v;
          }
        });
        return m;
      }
    
      $('.showme').on('click', function() {
        $('#movies-container').addClass('show');
        PopulateDropDownList();
      });
    });
    

    我觉得将事物分解为函数会更好。当用户单击以显示下拉列表时,它会被填充。现在用户将进行选择,并触发change 事件。在这里,我们可以确定如何处理该选择。

    我们通过 jQuery 更新 &lt;video&gt; 元素,使其拥有正确的来源,然后我们将其显示出来。

    HTML5 无法向视频添加按钮。您可以控制视频、开始、停止等……但不能向其中添加内容。现在你可以创建按钮并将它们浮动。如果您希望它们在特定时间出现,您需要观看计时器并触发它们显示。正如我所说,你的路还很长。

    希望这会有所帮助。

    【讨论】:

    • 嗨 Twisty 谢谢你的回答,正如你所说的按钮,使用你的功能,我添加了一个将按钮传递给视频容器的功能,这些按钮只是链接到另一个视频或网站,实际上视频我们有一个视频,其中包含一个按钮(交互式视频),您只需制作绝对位置的按钮,而视频容器位置相对,然后在此处添加不透明度,非常感谢
    • 是的,如果您假设视频中包含类似的按钮“下一步”,您只需将不透明度添加到下一个按钮,现在视频内的按钮将是可点击的,因为您现在需要指定按钮在视频内有按钮的确切位置,希望你得到我
    • 我有另一个线程正在播放这些视频和 json 用于学习目的,你能检查一下吗?:stackoverflow.com/questions/56655648/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    相关资源
    最近更新 更多