Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带键盘控制的视频播放器_Javascript_Html_Keyboard_Hbbtv - Fatal编程技术网

Javascript 带键盘控制的视频播放器

Javascript 带键盘控制的视频播放器,javascript,html,keyboard,hbbtv,Javascript,Html,Keyboard,Hbbtv,我试图建立一个视频播放器与键盘控制。 有人能帮我倒带吗 我想在按“左”键时倒带视频 这是到目前为止的代码。“播放和暂停”按钮起作用 告诉我无法读取null的属性“currentTime”时出错 var intervalForward; var intervalRewind; function handleKeyCode(kc) { switch(kc) { case VK_LEFT: keyFunction("LEFT"); return true;

我试图建立一个视频播放器与键盘控制。 有人能帮我倒带吗 我想在按“左”键时倒带视频 这是到目前为止的代码。“播放和暂停”按钮起作用

告诉我无法读取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);

}

设置currentTime并不是在所有浏览器中都一样有效,规范文档如下所示:

但从本质上讲,这可以归结为一个事实,即在设置视频之前,您几乎应该始终暂停视频,例如:

let myVideo = document.getElementById("video"); 
myVideo.pause(); 
myVideo.currentTime = 0;
但是,控制视频中搜索的更好方法是使用“playbackRate”属性

通常情况下,该值设置为1.0,表示正常速度,但是将其设置为负值将在视觉上以该速度向后播放视频,负片越高,视觉回放速度越快

与wise一样,大于1.0的正数以不同的速度向前播放视频

不过,关于在HbbTV兼容的应用程序中播放视频,我将在这里给您一些额外的建议

一般来说,在HbbTV应用程序中,您不应使用HTML5视频标签,而应使用“广播视频”对象,其完整细节可在HbbTV规范第6.2.2.6和9.7节中找到,您可以从以下网站下载:

如果您真的必须使用标准的HTML5视频标签,那么规范的第9.6节会告诉您需要知道的内容,但请注意,这很复杂,而且很混乱

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

<object id="video" type="video/broadcast" ></object>
您可以调用诸如“快进”、“快退”、“播放”、“停止”、“全屏”等函数,我不确定我上面链接的规范文档中是否描述了完整集,因为它看起来有点小,如果找不到方法列表,则可以从以下位置下载其他卷和规范文档:

我刚才还查阅了HbbTV规范的ETSI版本,并在A.2.4.7中找到了方法列表,可从以下网址获得:

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

但这还不到几个星期,我就完成并上传了这部分内容,然而,JSON数据和Kodi插件是其中的一部分:-)

如果你关注这个项目,当我上传或更改任何内容时,你会得到通知

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


document.getElementById(myvideo)
document.getElementById(“myvideo”)
非常感谢,错误已经消失,但我如何使2sec的倒带工作。按左键仍然没有任何作用
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.");
  }

}