From 056f2e5e9e912205dedfd64e01b50695e75d11ca Mon Sep 17 00:00:00 2001 From: Adrian Shum Date: Sun, 23 Oct 2022 01:59:54 +0800 Subject: [PATCH] chore: update descriptions --- README.md | 4 ++-- testdata/demo3.jpg | Bin 16103 -> 15765 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b80eacf..f4cc21c 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Result: ``` http://localhost:8000/unsafe/300x0/7x7/filters:label(imagorvideo,-10,-7,15,yellow):fill(yellow)/http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4 http://localhost:8000/unsafe/300x0/0x0:0x14/filters:frame(1m59s):fill(yellow):label(imagorvideo,-3,bottom,12,black,20)/http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4 -http://localhost:8000/unsafe/300x0/7x7/filters:frame(0.6):label(imagorvideo,-10,-7,15,yellow):fill(yellow)/http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4 +http://localhost:8000/unsafe/300x0/7x7/filters:frame(0.6):label(imagorvideo,10,-7,15,yellow):fill(yellow)/http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4 ``` @@ -49,7 +49,7 @@ imagorvideo supports the following filters, which can be used in conjunction wit ### Metadata -imagorvideo provides metadata endpoint that extracts video metadata, including dimension, duration and FPS data. The endpoint only processes the header without extracting the frame data. +imagorvideo provides metadata endpoint that extracts video metadata, including dimension, duration and FPS data. It processes header only, without extracting the frame data for better processing speed. To use the metadata endpoint, add `/meta` right after the URL signature hash before the image operations: diff --git a/testdata/demo3.jpg b/testdata/demo3.jpg index 5b938ab4a0bf18f0ffec5b07b407813233be131b..0f31c8764e9fba2f6947d0a7427c19e02f330399 100644 GIT binary patch delta 12387 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