Aktive Konfiguration: PROD · Helmut4 PROD · helmut4_backup_l-helmut1.adin.mdr.de_2026-10-19 07_52_22 197 Streams
Öffnen
PROD IO Node-Detail

Execute Javascript Action

helmut4_backup_l-helmut1.adin.mdr.de_2026-10-19 07_52_22 · ESP Transfer Hires

Node-Informationen

Stream
ESP Transfer Hires
Klasse
nodes.actions.execute.JavascriptExecuteActionImpl
UUID
b1ca4d82-a52d-418b-9f53-60c110d9c243
Operator-ID
11
Event
WATCHFOLDER

Properties

{
  "cmd": "function timecodeToFrames(tc, fps) {\n  var parts = tc.split(':');\n  var hours = parseInt(parts[0], 10);\n  var minutes = parseInt(parts[1], 10);\n  var seconds = parseInt(parts[2], 10);\n  var frames = parseInt(parts[3], 10);\n  \n  return ((hours * 3600) + (minutes * 60) + seconds) * fps + frames;\n}\n\nfunction framesToTimecode(frames, fps) {\n  var hours = Math.floor(frames / (3600 * fps));\n  frames = frames [<]%[>] (3600 * fps);\n  \n  var minutes = Math.floor(frames / (60 * fps));\n  frames = frames [<]%[>] (60 * fps);\n  \n  var seconds = Math.floor(frames / fps);\n  frames = frames  [<]%[>] fps;\n  \n  // Frames kann hier max fps-1 sein\n  // Falls frames == fps, 1 Sekunde hinzufügen\n  // Aber durch modulo sollte das schon rausfallen\n\n  function pad(n) {\n    return n < 10 ? '0' + n : '' + n;\n  }\n\n  return pad(hours) + ':' + pad(minutes) + ':' + pad(seconds) + ':' + pad(frames);\n}\n\nvar fps = parseInt('{stream.variable.FramesPerSecond}');\n\nvar tc1 = \"{stream.variable.inPointTc}\";\nvar tc2 = \"{stream.variable.offset}\";\n\nvar frames1 = timecodeToFrames(tc1, fps);\nvar frames2 = timecodeToFrames(tc2, fps);\n\nvar sumFrames = frames1 + frames2;\nvar result = framesToTimecode(sumFrames, fps);\n\nresult;",
  "nodeUUID": "b1ca4d82-a52d-418b-9f53-60c110d9c243",
  "failedNodeUUID": "849d7a9c-ef69-46fd-b81a-a5333dd0c8f4",
  "successNodeUUID": "849d7a9c-ef69-46fd-b81a-a5333dd0c8f4"
}

Skript

Original: 43 Zeilen · 1196 Zeichen Formatiert: 43 Zeilen
Formatierung ergänzt Einrückungen und Zeilenumbrüche. Ursprüngliche Variablennamen und Kommentare lassen sich aus minifiziertem Code nicht wiederherstellen. ExtendScript-Direktiven und E4X werden bei der Formatierung berücksichtigt.
Original
function timecodeToFrames(tc, fps) {
  var parts = tc.split(':');
  var hours = parseInt(parts[0], 10);
  var minutes = parseInt(parts[1], 10);
  var seconds = parseInt(parts[2], 10);
  var frames = parseInt(parts[3], 10);
  
  return ((hours * 3600) + (minutes * 60) + seconds) * fps + frames;
}

function framesToTimecode(frames, fps) {
  var hours = Math.floor(frames / (3600 * fps));
  frames = frames [<]%[>] (3600 * fps);
  
  var minutes = Math.floor(frames / (60 * fps));
  frames = frames [<]%[>] (60 * fps);
  
  var seconds = Math.floor(frames / fps);
  frames = frames  [<]%[>] fps;
  
  // Frames kann hier max fps-1 sein
  // Falls frames == fps, 1 Sekunde hinzufügen
  // Aber durch modulo sollte das schon rausfallen

  function pad(n) {
    return n < 10 ? '0' + n : '' + n;
  }

  return pad(hours) + ':' + pad(minutes) + ':' + pad(seconds) + ':' + pad(frames);
}

var fps = parseInt('{stream.variable.FramesPerSecond}');

var tc1 = "{stream.variable.inPointTc}";
var tc2 = "{stream.variable.offset}";

var frames1 = timecodeToFrames(tc1, fps);
var frames2 = timecodeToFrames(tc2, fps);

var sumFrames = frames1 + frames2;
var result = framesToTimecode(sumFrames, fps);

result;
Formatiert
function timecodeToFrames(tc, fps) {
  var parts = tc.split(':');
  var hours = parseInt(parts[0], 10);
  var minutes = parseInt(parts[1], 10);
  var seconds = parseInt(parts[2], 10);
  var frames = parseInt(parts[3], 10);

  return ((hours * 3600) + (minutes * 60) + seconds) * fps + frames;
}

function framesToTimecode(frames, fps) {
  var hours = Math.floor(frames / (3600 * fps));
  frames = frames[ < ] % [ > ](3600 * fps);

  var minutes = Math.floor(frames / (60 * fps));
  frames = frames[ < ] % [ > ](60 * fps);

  var seconds = Math.floor(frames / fps);
  frames = frames[ < ] % [ > ] fps;

  // Frames kann hier max fps-1 sein
  // Falls frames == fps, 1 Sekunde hinzufügen
  // Aber durch modulo sollte das schon rausfallen

  function pad(n) {
    return n < 10 ? '0' + n : '' + n;
  }

  return pad(hours) + ':' + pad(minutes) + ':' + pad(seconds) + ':' + pad(frames);
}

var fps = parseInt('{stream.variable.FramesPerSecond}');

var tc1 = "{stream.variable.inPointTc}";
var tc2 = "{stream.variable.offset}";

var frames1 = timecodeToFrames(tc1, fps);
var frames2 = timecodeToFrames(tc2, fps);

var sumFrames = frames1 + frames2;
var result = framesToTimecode(sumFrames, fps);

result;

Rohdaten

{
  "class": "nodes.actions.execute.JavascriptExecuteActionImpl",
  "deprecated": false,
  "properties": {
    "cmd": "function timecodeToFrames(tc, fps) {\n  var parts = tc.split(':');\n  var hours = parseInt(parts[0], 10);\n  var minutes = parseInt(parts[1], 10);\n  var seconds = parseInt(parts[2], 10);\n  var frames = parseInt(parts[3], 10);\n  \n  return ((hours * 3600) + (minutes * 60) + seconds) * fps + frames;\n}\n\nfunction framesToTimecode(frames, fps) {\n  var hours = Math.floor(frames / (3600 * fps));\n  frames = frames [<]%[>] (3600 * fps);\n  \n  var minutes = Math.floor(frames / (60 * fps));\n  frames = frames [<]%[>] (60 * fps);\n  \n  var seconds = Math.floor(frames / fps);\n  frames = frames  [<]%[>] fps;\n  \n  // Frames kann hier max fps-1 sein\n  // Falls frames == fps, 1 Sekunde hinzufügen\n  // Aber durch modulo sollte das schon rausfallen\n\n  function pad(n) {\n    return n < 10 ? '0' + n : '' + n;\n  }\n\n  return pad(hours) + ':' + pad(minutes) + ':' + pad(seconds) + ':' + pad(frames);\n}\n\nvar fps = parseInt('{stream.variable.FramesPerSecond}');\n\nvar tc1 = \"{stream.variable.inPointTc}\";\nvar tc2 = \"{stream.variable.offset}\";\n\nvar frames1 = timecodeToFrames(tc1, fps);\nvar frames2 = timecodeToFrames(tc2, fps);\n\nvar sumFrames = frames1 + frames2;\nvar result = framesToTimecode(sumFrames, fps);\n\nresult;",
    "nodeUUID": "b1ca4d82-a52d-418b-9f53-60c110d9c243",
    "failedNodeUUID": "849d7a9c-ef69-46fd-b81a-a5333dd0c8f4",
    "successNodeUUID": "849d7a9c-ef69-46fd-b81a-a5333dd0c8f4"
  }
}

Vorgang läuft

0 s · Bitte warten. Der Vorgang wird verarbeitet.

    0 s · Es wird keine neue Snapshot-Analyse gestartet.

    Willkommen im Helmut Analyzer

    Neu hier? Unter Info & Hilfe findest du einen Quickstart für den Export aus Helmut4, den Import deiner Konfiguration und die Auswertung. Dort sind auch unsere Prüfregeln und Best Practices erklärt.

    Info & Hilfe öffnen