Skip to content

Releases: diffusionstudio/core

v1.0.0-rc.1

03 Sep 13:08
58dda34
Compare
Choose a tag to compare

Some breaking changes were introduced with v1.0.0-rc.1. Here is a migration guide:

appendTrack has been renamed to shiftTrack.

before:

const track = composition.appendTrack(VideoTrack);

after:

const track = composition.shiftTrack(VideoTrack);

appendClip has been renamed to add.

before:

const clip = await composition.appendClip(new Clip());
// when using tracks
const clip = await track.appendClip(new Clip());

after:

const clip = await composition.add(new Clip());
// when using tracks
const clip = await track.add(new Clip());

position has been renamed to layer on the track object

before:

const track = composition.appendTrack(VideoTrack).position('bottom');

after:

const track = composition.shiftTrack(VideoTrack).layer('bottom');

New Features

a new method for creating tracks has been introduced:

const track = composition.createTrack('video');
// equivalent to
const track = composition.shiftTrack(VideoTrack);

This enabled us to add a new new method to the MediaClip for creating captions, which was previously not possible due to circular dependencies:

const audio = new AudioClip(new File(), { transcript: new Transcript() });
await composition.add(audio);
await audio.generateCaptions();

Note the MediaClip needs to be added to the composition for the generateCaptions method to be available.

v1.0.0-beta.15

01 Sep 14:40
Compare
Choose a tag to compare
  • Reduced caption preset complexity by omitting the init function and serializing a base text clip

v1.0.0-beta.14

30 Aug 19:52
Compare
Choose a tag to compare

Added VerdantCaptionPreset

example usage:

import * as core from '@diffusionstudio/core';

const composition = new core.Composition();

const transcript = await core.Transcript.from('https://diffusion-studio-public.s3.eu-central-1.amazonaws.com/docs/ai_ft_coding_captions.json');

await composition.appendTrack(core.CaptionTrack)
    .from(new core.MediaClip({ transcript: transcript.optimize() }))
    .create(core.VerdantCaptionPreset)

v1.0.0-beta.13

30 Aug 17:42
Compare
Choose a tag to compare
  • migrated repository to open-source governed by the Mozilla Public License, v. 2.0
  • minor bug fixes

v1.0.0-beta.12

28 Aug 13:50
Compare
Choose a tag to compare

Improved TextClip default values and removed confusing properties

v1.0.0-beta.11

23 Aug 11:41
Compare
Choose a tag to compare
  • Improved error handling when loading videos with invalid codecs
  • Enforced inline playback on HTML5 Video Element (mobile related)

v1.0.0-beta.10

20 Aug 11:23
Compare
Choose a tag to compare

Added CanvasEncoder implementation

The CanvasEncoder is a powerful tool for creating video recordings directly from a canvas element in the browser, ideal for capturing canvas-based games or animations without the need for our Composition object.

Basic Example

import { CanvasEncoder } from '@diffusionstudio/core';

// Make sure to assign video dimensions
const canvas = new OffscreenCanvas(1920, 1080);

const encoder = new CanvasEncoder(canvas);

const ctx = canvas.getContext("2d")!;

for (let i = 0; i < 90; i++) {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    // background
    ctx.fillStyle = "blue";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    // text
    ctx.fillStyle = "white";
    ctx.font = "50px serif"; // animated Hello World
    ctx.fillText("Hello world", 10 + i * 20, 10 + i * 12);

    // Encode the current canvas state
    await encoder.encodeVideo();
}

const blob = await encoder.export();

v1.0.0-beta.9

19 Aug 14:53
1a4b7f2
Compare
Choose a tag to compare
  • Added properties to all Clip constructors for a more efficient initialization

v1.0.0-beta.8

const text = new core.TextClip('Bunny - Our Brave Hero')
      .set({ position: 'center', stop: 90, stroke: { color: '#000000' } }); // will trigger 2 update events

v1.0.0-beta.9

const text = new core.TextClip({
      text: 'Bunny - Our Brave Hero',
      position: 'center',
      stop: 90,
      stroke: { color: '#000000' },
}); // will trigger a single update event
  • Improved set method typing by defining dedicated interfaces