Skip to content

Releases: cshum/imagorvideo

v0.3.9

05 Dec 06:38
edeb3ea
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.3.8...v0.3.9

v0.3.8

05 Nov 12:01
Compare
Choose a tag to compare

What's Changed

  • build(deps): bump github.com/stretchr/testify from 1.8.0 to 1.8.1 by @dependabot in #45
  • build(deps): ffmpeg 5.1.2 by @cshum in #46
  • build(deps): go 1.19.3 by @cshum in #47
  • build(deps): libvips 8.13.3 by @cshum in #48
  • build(deps): imagor 1.3.3 by @cshum

New Contributors

Full Changelog: v0.3.3...v0.3.8

v0.3.3

23 Oct 08:57
Compare
Choose a tag to compare

Seeking Support

imagorvideo introduces seek(n) filter and there are differences you may want to choose one over the other.
While frame(n) gives you the precise time frame specified, precise may not be the best in some circumstances:

http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4

Retrieving the frame at 5 minutes elapsed time of this video:

http://localhost:8000/unsafe/filters:frame(5m)/http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4

It results a complete black frame.

black

This is where seek(n) comes handy. It seeks to the key frame before the 5 minutes elapsed time, then perform best frame selection starting from that point using root-mean-square error (RMSE).
The result is a reasonable image that sits close to the specified time:

http://localhost:8000/unsafe/filters:seek(5m)/http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4

seek 5m

What's Changed

  • fix: seeker initialization by @cshum in #42
  • feat: seek() filter and ffmpeg.SeekPosition, ffmpeg.SeekDuration by @cshum in #43
  • fix(ffmpeg): 0s frame handling by @cshum in #44

Full Changelog: v0.3.0...v0.3.3

v0.3.0

22 Oct 06:28
Compare
Choose a tag to compare

What's Changed

  • refactor(ffmpeg): selected_frame and frame(n) starts from 1 by @cshum in #38
  • feat(ffmpeg): seek and select frame by duration and float position by @cshum in #39
  • feat(ffmpeg): select frame by duration and float position by @cshum in #40
  • refactor(ffmpeg): use r_frame_rate for FPS by @cshum in #41

Full Changelog: v0.2.2...v0.3.0

v0.2.2

18 Oct 00:10
Compare
Choose a tag to compare

What's Changed

  • refactor(ffmpeg): use float for FPS by @cshum in #35
  • refactor(ffmpeg): cleanup callbacks and increased coverage by @cshum in #36
  • build: imagor 1.2.2 by @cshum in #37

Full Changelog: v0.2.0...v0.2.2

v0.2.0

14 Oct 01:09
Compare
Choose a tag to compare

v0.2.0 marks the beginning of a major refactoring of the ffmpeg code base, which also introduced more fine grain control over the frame selection and metadata:

New Filters

  • frame(n) specifying the frame index n for imaging. This allows skipping the default automatic selection, which involves computing root-mean-square error (RMSE) of histogram frames data.
  • max_frames(n) restrict the maximum number of frames allocated for image selection. The smaller the number, the faster the processing time.

Enriched Metadata

Enriched metadata to include more header info. Also included frames per second fps and selected frame data, if frame processing is activated:

{
  "format": "mp4",
  "content_type": "video/mp4",
  "orientation": 1,
  "duration": 10000,
  "width": 1920,
  "height": 1080,
  "title": "Big Buck Bunny, Sunflower version",
  "artist": "Blender Foundation 2008, Janus Bager Kristensen 2013",
  "fps": 30,
  "selected_frame": 21,
  "has_video": true,
  "has_audio": false
}

What's Changed

  • refactor: duration metadata in millisecond by @cshum in #25
  • feat(ffmpeg): add fps metadata by @cshum in #26
  • refactor(ffmpeg): refactor process frames by @cshum in #27
  • feat: ffmpeg select specific frame and frame(n) filter by @cshum in #28
  • test: ffmpeg select frame and frame(n) filter by @cshum in #29
  • feat(imagvideo): max_frames(n) filter by @cshum in #30
  • refactor(ffmpeg): process on select frame by @cshum in #31
  • refactor(ffmpeg): skip histogram if frame selected by @cshum in #32
  • fix(ffmpeg): no codec handling by @cshum in #33
  • test(ffmpeg): mp3 cover art tests by @cshum in #34

Full Changelog: v0.1.7...v0.2.0

v0.1.7

12 Oct 07:54
Compare
Choose a tag to compare

Improved memory consumption and read performance for large files over 100MB for non-seekable source.

What's Changed

  • refactor: imagor seek stream implementation by @cshum in #21
  • build: imagor 1.2.0 by @cshum in #22
  • refactor: metadata add format and content type by @cshum in #23

Full Changelog: v0.1.6...v0.1.7

v0.1.6

08 Oct 05:55
145b4ce
Compare
Choose a tag to compare

What's Changed

  • fix(imagorvideo): fix image orientation of video exif by @cshum in #18
  • build: imagor 1.1.8

Full Changelog: v0.1.5...v0.1.6

v0.1.5

07 Oct 12:58
Compare
Choose a tag to compare

What's Changed

  • build: go 1.19.2 by @cshum in #15
  • fix(ffmpeg): fix ffmpeg reader callback buffer by @cshum in #16
  • build: imagor 1.1.7 by @cshum

Full Changelog: v0.1.3...v0.1.5

v0.1.3

01 Oct 13:59
01acb20
Compare
Choose a tag to compare

What's Changed

  • fix(imagorvideo): close reader on ReadSeeker size <= 0 by @cshum in #9
  • build: libvips 8.13.2 by @cshum in #10
  • refactor(ffmpeg): refactor pointer and reader stream by @cshum in #11
  • build(deps): imagor 1.1.5 by @cshum in #13
  • fix(imagorvideo): fix reader and read seeker close sequence by @cshum in #12

Full Changelog: v0.1.2...v0.1.3