Changelog

Changes in each release.

1.0.0

The first release.

The first release of the video editor in @layermetry/media-editor. It includes:

  • The editor as a React component, a custom element, and mountVideoEditor. See Frameworks.
  • A timeline with video, audio, text, captions, subtitles, images, shapes, stickers, and backgrounds.
  • Backgrounds from a color, a gradient in any direction, a picture, or a blurred copy of a clip, with Blur and Darken. Blurred fill in Resizing fills the empty bars of a clip. A picture background covers the canvas and is centred, in the preview and in the exported video. A gradient, a picture, or a blurred copy keeps the chosen color as its fallback.
  • Effects, animations, templates, and resizing.
  • MP4 export in the browser, with nothing downloaded to do it. Clips from MP4, MOV, WebM, and MKV files export. Every refusal is a plain sentence. See Browser requirements.
  • WebM export, with VP9 video and Opus sound. A video with sound now exports in Firefox, and in Chrome and Edge on Linux: the Export panel chooses WebM there by itself. Export without sound makes a file with the picture only, and only when the user ticks it. exportStart takes format, codec: 'vp9', and withoutSound. The new action readExportCapabilities says which files keep the sound in this browser.
  • GIF export in every browser, with two Quality cards, one Frame rate field, and a sentence in Sizes when the GIF is wide or long. onExport receives a File of type image/gif. exportStart takes format: 'gif', gifColors, gifDither, and gifLoop.
  • AI music and sound effects in the Audio panel and under Cmd+K, through your own AI server. There is no hosted service for them. New ai.music and ai.soundEffect, new ui.features switches aiSound.length and aiSound.instrumental, a model list asked with ?capability=music, and new types AISoundAnswer, AIModelListAnswer, AIModelListEntry, and AISoundOptions. A kept sound reaches onUploadAsset with source: 'generated'.
  • Microphone recording of a voiceover, with a countdown, an input level, Clean up noise, several takes, a script and prompter, captions from a take, and re-recording part of a clip. New prop recording, new ui.features switches recording.*, new onUploadAsset value source: 'recorded' with ctx.take and ctx.punchIn, new template field voiceoverScript, and new actions voiceoverSetScript, captionsFromClip, and audioReplaceRange. audioAddFromUrl takes presetId. The headless runtime takes ai and voiceoverScript.
  • Clip speed, audio fades, and trimming the start of a clip from the timeline.
  • Captions with caption animation, and captions that scale when the canvas is resized. On export, captions go in the picture, as a subtitle track, or both, and as an SRT file, a VTT file, or a plain transcript, in extras.srt, extras.vtt, and extras.txt. Include speaker names writes each speaker's name into the three files. An imported .vtt file keeps its speaker names.
  • Disable captions with ai: { captions: false }. Every captions control is hidden, the assistant is not offered captionsFromClip, and no sound is sent anywhere.
  • Background pictures from web addresses are requested the same way in the preview and in the export. The picture's server must send a CORS header. Without it, the preview shows the fallback color, as the export does.
  • A save keeps the storage key that onUploadAsset returned, and does not upload the file again. A signed S3 or CloudFront address is loaded exactly as it is.
  • probeMediaFile reports Opus, FLAC, MP3, and PCM sound in MP4 and MOV files. For an MP4, codecId is the decoder's codec name. See Media utilities. The sound of a clip from a file over about 2 GB is read in pieces. See Performance.
  • The whole Google Fonts catalog through googleFonts, without a key in the page. See Fonts.
  • Cmd + Shift + E (Ctrl + Shift + E) opens the Export panel. See Export.
  • Photo credits on the canvas and in the export.
  • AI features through your own endpointUrl or requestFn. Hosted AI is coming soon and available only with an enterprise licence from Layermetry (hosted: true). See AI providers. Two refusals, ai-credits-exhausted and meter-off, can carry a top-up address. See Error codes.
  • The AI assistant and Headless mode.
  • License keys that are checked in the browser, on HTTPS and plain http:// pages alike, and confirmed in the background.

If you used a pre-release build, check these changes:

  • The export DOM event of the custom element is sent once per export, and event.detail is the File. Code that read event.detail[0] must read event.detail.
  • showThemeCreator is false by default. Pass true in your development build to see the Customization Studio button.
  • The AI assistant and the other AI controls appear only with a valid ai prop.
  • export={{ experimental }} and configureAssets are accepted and change nothing.
  • googleFontsApiKey is deprecated. Use googleFonts.
  • onUploadAsset can receive source: 'staged'. See Asset storage.
  • A draft saved again keeps its template.id. Store drafts by id.
  • The license state pending-online is no longer produced.
  • The headings that describeAIError returns for the license codes, not-configured, and ai-quota-exceeded changed. They name no company and give no instruction meant for a developer. Compare code, not the heading.
  • The done event of onChatEvent also carries errorCode and topUpUrl.
  • The refusal audio-encoder-unsupported now reads "This browser cannot save sound in an MP4 video, so the video could not be exported." and names the browsers that can. A new refusal, webm-sound-unsupported, is for a WebM. See Export failures.
  • onExport can receive a video/webm or an image/gif file. Check the type before you store or process the file.

Fixed since the pre-release builds:

  • Dashed and dotted lines stay dashed in the exported video, and arrowheads are drawn as the canvas draws them.
  • A rounded rectangle stays rounded on the canvas, and the Corner Radius of the Effects panel reaches the exported video.
  • Caption words keep the colors that the canvas shows in the exported video when the highlight is off.
  • A shape's drop shadow reaches the exported video.
  • Clicking into a box of the Effects panel and out again no longer changes the design.
  • A caption made bigger or smaller with the selection frame keeps its new size, on the canvas and in the exported video.
  • Undo and redo keep a picture that was placed by your storage key on the canvas.
  • An MP4 made in Safari has sound that a player can read.