ENTWICKLERDOKUMENTATION

Kommandozeile und Export ohne Fenster

Den Player aus einem Skript starten und Einzelbilder oder Filme ohne Fenster exportieren, auf einer Renderfarm oder in einem Pipeline-Hook.

Das Programm heißt unter Windows BernardReview.exe (C:\Program Files\Bernard Review\bin\) und unter Linux bernard-review. Die folgenden Beispiele schreiben BernardReview; ersetzen Sie es durch den Pfad Ihrer Installation.

Den Player starten

BernardReview <media or .bpl> [<media> ...] [--video <file>] [--frame N] [--ipc-port N]
  • Ein bloßer Pfad oder einer, der mit --video angegeben wird, wird beim Start geöffnet; mehrere Pfade werden der Playlist der Reihe nach hinzugefügt. Eine Mediendatei auf der Kommandozeile wird abgespielt, sobald sie geöffnet ist: So übergibt eine Dateizuordnung oder Öffnen mit einen Clip an den Player.
  • --frame N setzt den Playhead auf die Position N des ersten Clips, ab 0 gezählt (wie der Befehl seek).
  • --ipc-port N lässt den Automatisierungsport auf N statt auf 5556 lauschen. Zwei Player auf einem Rechner müssen zwei verschiedene Ports verwenden.
  • Nur mit Optionen (--ipc-port) startet der Player in der Pause.
  • Läuft bereits ein Player des Benutzers, werden die Dateien an ihn gesendet, statt einen zweiten Player zu öffnen, außer mit --ipc-port oder --export oder wenn Open files in the running player in den Preferences nicht angehakt ist. Ein Skript, das seinen eigenen Player steuern muss, startet ihn daher mit --ipc-port.

Wie Sie den Player steuern, sobald er läuft, steht unter Python-API und IPC.

Export ohne Fenster

--export führt einen Export aus, ohne ein Fenster zu öffnen, und beendet sich dann. Es gibt ihn in drei Formen.

Optionen über einem Preset:

BernardReview --export --preset dailies_prores_lt \
  --source "D:/shots/SQ010_SH010_ANIM_v002.mov" \
  --output "D:/dailies/SQ010_SH010_ANIM_v002.mov" \
  --cc "exposure=0.5" --display-space rec709 \
  --burn-in "tl={clip} {version};bl={frame} {timecode};br={date}"

Mehrere Quellen, dank <clip> jede in ihrer eigenen Datei:

BernardReview --export --preset jpg_review \
  --source A001_C001.R3D --source A001_C002.R3D \
  --output "D:/stills/<clip>/" --resize 1920x0 --chroma 444

Eine JSON-Auftragsdatei mit denselben Feldern wie der Befehl export (Beispiele in api/export_examples/):

BernardReview --export job.json

Ohne --format nennt die Erweiterung der Ausgabe das Format: dailies.mov, shot.####.dpx. Bei einer Sequenz ist die Ausgabe ein ####-Muster oder ein Ordner.

Die Optionen

OptionWerte
--preset NAMEplates_exr_half_zip, plates_exr_float_piz, dpx_10bit, tiff_16bit_viewer, jpg_review, dailies_prores_lt, dailies_dnxhr_sq, master_prores_hq, master_prores_4444, master_dnxhr_444, client_h264, client_h265, nvfx_review, nvfx_lossless oder ein Studio-Preset
--source PATH (wiederholbar), --output oder -oEingaben und Ausgabe; <clip>, <version> und <recipient> in der Ausgabe
--formatexr, dpx, tiff, jpg, png, nvfx (NOVA), mov, mp4
--codecprores_proxy, prores_lt, prores_422, prores_hq, prores_4444, dnxhr_lb, dnxhr_sq, dnxhr_hq, dnxhr_hqx, dnxhr_444, h264, h265, mjpeg
--chroma, --crf, --bitrate, --quality, --bit-depth, --compressionQualität und Kompression
--audiopcm, aac, none
--fps, --in, --out, --step, --frame-offset NBildrate, Bereich (Positionen ab 0), Versatz der eingeblendeten Nummern
--start-number, --paddingNummerierung einer Ausgabesequenz
--resize WxH, --proxy-scaleAusgabegröße (0 behält das Seitenverhältnis), Decodierauflösung
--colorsource (Pixel wie decodiert) oder custom (die Werte aus --cc)
--cc "key=value,..."exposure, gamma, contrast, brightness, saturation, hue, r, g, b, temp, tint ...
--input-space, --display-spaceZum Beispiel acescg, srgb, logc4; rec709, p3, rec2020, aces2
--layerPass eines Multi-Layer-EXR
--burn-in ["layout"], --no-burn-inEinblendung: tl, tc, tr, bl, bc, br, getrennt durch ;
--watermark, --watermark-text, --watermark-position, --watermark-opacity, --watermark-size, --no-watermarkWasserzeichen (nur MOV, MP4 und JPEG)
--recipient NAME, --studio NAME{recipient}, {studio} und <recipient> füllen
--hardware, --no-hardware, --smart-tier, --no-smart-tierAuf der Grafikkarte decodieren; mit der Auflösung decodieren, die die Ausgabe braucht
--annotations, --no-annotationsDie Zeichnungen einrechnen (siehe unten)

Die Optionen mit --no- und ihre positiven Formen haben Vorrang vor dem, was ein Preset oder eine Auftragsdatei festlegt.

Ein Rezept

BernardReview --export --recipe evening_dailies.json \
  --source SQ010_SH010_COMP_v003.mov --source SQ010_SH020_COMP_v007.mov \
  --recipient "Client A"

Das Rezept bringt alles andere mit: Jede Ausgabe wird für jede Quelle erstellt, nacheinander. Es nimmt nur --recipe, --source, --recipient, --studio und --session.

Was das Skript zurückbekommt

  • Während des Exports Zeilen export: frame N/M; am Ende eine letzte JSON-Zeile, die den Auftrag zusammenfasst (Ausgabe, verwendeter Encoder und jobs bei mehreren Quellen oder einem Rezept).
  • Exit-Code: 0, wenn alles gelungen ist, 1 bei einer fehlerhaften Kommandozeile oder einem fehlerhaften Rezept, 2, wenn ein Export fehlgeschlagen ist.

Bevor Sie es in eine Farm einbauen

  • Eine Videoquelle wird vor dem Export auf 8 Bit decodiert; RAW und EXR behalten ihre Präzision.
  • Die Farbmodi viewer und clip bedeuten ohne Fenster nichts: Sie werden zu custom, mit den Werten aus --cc.
  • Zeichnungen stammen aus der Playlist des Players: Ohne Fenster gibt es keine einzurechnenden. Um Zeichnungen zu exportieren, führen Sie den Export aus einem geöffneten Player aus (der Befehl export mit annotations, siehe Python-API und IPC).
  • H.264 und H.265 brauchen einen Hardware- oder System-Encoder auf dem Rechner (NVENC, Quick Sync, AMF, Media Foundation unter Windows; NVENC, VA-API, Quick Sync unter Linux). Ein Farm-Rechner ohne Grafikkarte exportiert ProRes oder DNxHR.
  • Eine Vektor-SWF wird vom Exporter von Ruffle gerendert, der eine Grafikkarte braucht; die Variable BERNARD_RUFFLE_EXPORTER gibt auf einer Farm seinen Pfad an.
  • NOVA: --format nvfx mit --compression htj2k oder wavelet (verlustbehaftet, --quality), lossless oder raw und --bit-depth 16 oder 32.
  • Das Wasserzeichen lehnt Plate-Formate (EXR, DPX, TIFF, PNG) und NOVA ab. Der Empfänger erscheint weder in der Zusammenfassung noch im Log: Die Zusammenfassung und das Log schreiben stattdessen <recipient>.

Weiterführend: das vollständige Handbuch, Teile 8.6 bis 8.8 und 11 (Help > User Guide im Player).