SOURCE

console 命令行工具 X clear

                    
>
console
let fontData, textAnimationData;
let type = "flower";//transition 、effect 、text 、flower、animation
let canvas = document.getElementById('canvas');
let editor = new Editor(canvas);
let wordArt, wordArt1;
let fontNum = 0;
let animation1, animation2, animation3, textType, stickerNode, textNode, sticker_url, text_url;


let track_video = editor.track({ type: 'video', zIndex: 0 });
let track_effect = editor.track({ type: 'effect', zIndex: 0 });
let videoNode = editor.video('https://tosv.byted.org/obj/eden-internal/uhyuhybd/video-editor-resource/assets/example2.mp4', {
    userData: {
        source: ''
    }
});
videoNode.timelineStart(0);
videoNode.timelineStop(4);
videoNode.name = 'video1';
track_video.addNode({ node: videoNode });

let videoNode1 = editor.video('https://tosv.byted.org/obj/eden-internal/uhyuhybd/video-editor-resource/assets/example2.mp4', {
    userData: {
        source: ''
    }
});
videoNode1.timelineStart(2);
videoNode1.timelineStop(6);
videoNode1.name = 'video1';
track_video.addNode({ node: videoNode1 });


let imageNodeTransformCrop = editor.image("https://tosv.byted.org/obj/eden-internal/uhyuhybd/video-editor-resource/assets/transcrop.png");
imageNodeTransformCrop.timelineStart(2);
imageNodeTransformCrop.timelineStop(4);
let transition = editor.transition(Editor.DEFINITIONS.MOTIONBRO);
transition.name = 't1';
transition.transition(2, 4);
videoNode.addTransition({ transition: transition, autoTargetTime: false, secondaryNode: [imageNodeTransformCrop] });

let lookupTable = new Image();
lookupTable.src = 'https://tosv.byted.org/obj/eden-internal/uhyuhybd/video-editor-resource/assets/image/chujian_lut.png';
//需要preloadTime
let effect = editor.effect(Editor.DEFINITIONS.LUT_FILTER(lookupTable, 1), {
    type: 'lut',
    userData: {
        source: 'LUT_FILTER-source'
    }
});
effect.effect(2, 6);
let secondaryNode = editor.image('https://tosv.byted.org/obj/eden-internal/uhyuhybd/video-editor-resource/assets/image/chujian_lut.png');
secondaryNode.timelineStart(2);
secondaryNode.timelineStop(6);

initEvent();
initEditor();
function initEvent() {
    let addEffectDom = document.getElementById('addEffect');
    addEffectDom.onclick = () => {
        track_effect.addEffect({ effect, secondaryNode: [secondaryNode] });
    }
    let removeEffectDom = document.getElementById('removeEffect');
    removeEffectDom.onclick = () => {
        // videoNode.removeEffect({ effect });
        track_effect.removeEffect({ effect, secondaryNode: [secondaryNode] });
    }
}
function initEditor() {
    let graphCanvas = document.getElementById('graph');
    Editor.utils.visualiseVideoContextGraph(editor, graphCanvas, true);
    editor.on('timeupdate', () => {
        Editor.utils.visualiseVideoContextGraph(editor, graphCanvas);
    })
    InitVisualisations(editor, 'timeline-canvas', 'currentTime');
    playButton.onclick = () => {
        editor.play();
    }
    pauseButton.onclick = editor.pause.bind(editor);
    let interactiveBox = editor.initInteractiveBox(wrapper, {
        rotatable: true,
    });
}
<div class="wrapper" id="wrapper">
    <canvas width="640" height="360" id="canvas"></canvas>
  </div>
  <button id="playButton">play</button>
  <button id="pauseButton">pause</button></br>
  <button id="addEffect">添加滤镜</button>
  <button id="removeEffect">删除滤镜</button>
  <p id="currentTime">
  </p>
  <p>
    <canvas id="timeline-canvas" width="640" height="20"></canvas>
  </p>
  <canvas width="640" height="360" id="graph"></canvas>
html {
    font-family: monospace;
    color: #333;
    /* background-color: black; */
  }
  #current {
    font-size: 12px;
  }
  #canvas {
    width: 640px;
    height: 360px;
  }
  #canvas2 {
    width: 640px;
    height: 360px;
    position: absolute;
    left: 0px;
    top: 0px;
    z-index: 10;
  }
  #container {
    position: relative;
  }

  button {
    line-height: 1.499;
      position: relative;
      display: inline-block;
      font-weight: 400;
      white-space: nowrap;
      text-align: center;
      background-image: none;
      border: 1px solid transparent;
      cursor: pointer;
      user-select: none;
      height: 32px;
      padding: 0 15px;
      font-size: 14px;
      border-radius: 4px;
      color: rgba(0,0,0,0.65);
      background-color: #fff;
      border-color: #d9d9d9;
      outline: 0;
      transition: all .3s cubic-bezier(.645, .045, .355, 1);
  }

  button:hover {
    color: #40a9ff;
    background-color: #fff;
    border-color: #40a9ff;
  }

  button:active {
    color: #096dd9;
    background-color: #fff;
    border-color: #096dd9;
  }

  input[type="text"] {
    -webkit-appearance: none;
    background-color: #fff;
    background-image: none;
    border-radius: 4px;
    border: 1px solid #dcdfe6;
    box-sizing: border-box;
    color: #606266;
    display: inline-block;
    font-size: inherit;
    height: 32px;
    line-height: 32px;
    outline: none;
    padding: 0 8px;
    transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
    width: 50px;
  }

  .wrapper {
    width: 640px;
    height: 360px;
    position: relative;
  }

@font-face {
  font-family: "hardFont";
  src: url('./../../assets/hardFont.ttf');
}
#bg-video{
    width:640px;
    height:400px;
}
#changeSrc{
    width:80%;
    height:40px;
    line-height: 40px;
}

本项目引用的自定义外部资源