【问题标题】:video player with keyboard controls带键盘控制的视频播放器
【发布时间】:2019-05-08 16:27:56
【问题描述】:

我正在尝试使用键盘控件构建视频播放器。 有人可以帮我使用倒带功能吗 当我按左键时,我希望视频快退 这是到目前为止的代码。播放和暂停按钮有效

我收到一条错误消息,告诉无法读取 null 的属性“currentTime”

var intervalForward;
var intervalRewind;

function handleKeyCode(kc) {
switch(kc) {

    case VK_LEFT:
        keyFunction("LEFT");
        return true;
        break;

    case VK_PLAY:
        keyFunction("PLAY");
        return true;
        break;
    case VK_PAUSE:
        keyFunction("PAUSE");
        return true;
        break;


    case VK_REWIND:
        keyFunction("REWIND");
        return true;
        break;
    default:
        return false;
}
}

function keyFunction(e) {
switch(e) {
    case "OK":


        document.getElementById("myvideo").play();

        break;
    case "BACK":

        document.getElementById("myvideo").pause();

        break;
    case "LEFT":

    document.getElementById(myvideo).currentTime == 0;

             break;

    }
}

function init() {

var script2 = document.createElement('script');
script2.setAttribute('src', 'keycodes.js');
document.body.appendChild(script2);

document.addEventListener("keydown", function(e) {
    if (handleKeyCode(e.keyCode))
        e.preventDefault();
}, false);

}

【问题讨论】:

  • document.getElementById(myvideo)document.getElementById("myvideo")
  • 非常感谢,错误消失了,但我将如何使倒带 2 秒工作。按左键仍然没有做任何事情

标签: javascript html keyboard hbbtv


【解决方案1】:

在所有浏览器中设置 currentTime 的效果并不相同,规范文档在这里:

https://www.w3.org/TR/2011/WD-html5-20110113/video.html#dom-media-currenttime

但本质上归结为一个事实,即在尝试设置视频之前,您几乎应该始终暂停视频 EG:

let myVideo = document.getElementById("video"); 
myVideo.pause(); 
myVideo.currentTime = 0;

然而,控制视频中搜索的更好方法是使用“playbackRate”属性。

通常,此值设置为 1.0,表示正常速度,但将其设置为负值将在视觉上以该速度向后播放视频,负值越高,视觉倒带越快。

同样,大于 1.0 的正数以不同的速度播放视频。

不过,我将在此为您提供一些额外建议,让您了解如何在符合 HbbTV 的应用程序中播放视频。

一般而言,在 HbbTV 应用程序中,您不应使用 HTML5 视频标签,而应使用“广播视频”对象,其完整详细信息可在 HbbTV 规范第 6.2.2.6 和 9.7 节中找到下载地址:

http://www.hbbtv.org/wp-content/uploads/2015/07/HbbTV-SPEC20-00023-001-HbbTV_2.0.1_specification_for_publication_clean.pdf

如果您真的必须使用标准的 HTML5 视频标签,那么规范的第 9.6 节会告诉您需要了解的内容,但请注意,它既复杂又混乱。

使用标准的广播视频对象很容易公平,您需要在 HTML 中定义一个 OIPF 兼容的视频对象,如下所示。

<object id="video" type="video/broadcast" ></object>

然后您可以使用以下我编写的用于我自己的应用程序的 JS 函数来非常简单地控制它。

function bindBroacastVideo() {
  try {
    var video = document.getElementById("video");
    video.type = "video/broadcast";
    video.bindToCurrentChannel();
  }
  catch (err) {
    console.log("Broadcast Video object failed to bind to broadcast.");
  }
}

function stopBroadcastVideo() {
  try {
    document.getElementById("video").stop();
    document.getElementById("video").release();
  }
  catch (err) {
    console.log("Broadcast Video failed to stop.");
  }
}

function playFileOnBroadcastVideo(fileUrl)
{
  if (!fileUrl) return;

  try {
    var video = document.getElementById("video");
    video.type = "video/mp4";
    video.data = fileUrl;
    video.play();
  }
  catch (err) {
    console.log("Broadcast Video object failed to play MP4.");
  }

}

您可以调用“fastForward”、“rewind”、“play”、“stop”等函数>" "goFullScreen" 等等,我不确定我上面链接的规范文档中是否描述了全套,因为它看起来有点小,如果你不能找到方法列表,然后您可以从以下位置下载其他卷和规范文档:

https://www.hbbtv.org/resource-library/specifications/

我也刚刚查看了 HbbTV 规范的 ETSI 版本,发现 A.2.4.7 中的方法列表可在以下位置获得:

https://www.etsi.org/deliver/etsi_TS/102700_102799/102796/01.04.01_60/ts_102796v010401p.pdf

我将上传一个视频播放器 HbbTV 应用程序作为我正在进行的项目的一部分:

https://github.com/shawty/MsdnChannel9VideoLister

但要等几周后,我才能完成并上传该部分,但现在,JSON 数据和 Kodi 插件作为其中的一部分 :-)

如果您关注该项目,当我上传或更改任何内容时,您会收到通知。

更新 您可以在此网络文档中找到广播视频对象的完整方法和属性文档:

https://www.oipf.tv/web-spec/volume5.html

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 2022-08-20
    • 2012-12-06
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多