1 : START & GET DETECT FACE (ASYNC)
=====================================
ACTION DESCRIPTION
--------------------------------
DETECT FACE from a video file returns the segment timestamps along with a list of frames. For each frame, it returns the face attributes and related timestamp.
Asynchronous request mode, useful for large files and time-insensitive application.
STEP-BY-STEP SETUP
--------------------------------
If you intend to store your files in Google Cloud Storage, please refer to the instructions of "GOOGLE STORAGE DROPZONE & UTILITIES" plugin (
https://bubble.io/plugin/google-storage-dropzone--utilities-1616855011494x235332313714262000) first to setup your bucket. Then follow the instructions below.
The steps from 0) to 1) can be automatically performed by logging in into your Google Cloud Console, opening the Cloud Shell (top right corner of your page) and copy pasting this command and press enter:
wget -q
https://storage.googleapis.com/bubblegcpdemo/demo-assets/wiseable-gcp-video.py && python3 wiseable-gcp-video.py
Otherwise, follow these manual steps:
0) Set-up a project from Google Cloud Console :
https://cloud.google.com/video-intelligence/docs/common/auth#enabling_the_api - Create or select a project
- Enable the CLOUD VIDEO INTELLIGENCE API for that project
- Create a service account
- Download a private key as JSON.
1) Open the private key JSON file with a text editor, copy/paste the following parameters from your file to the Plugin settings:
- CLIENT_EMAIL
- PROJECT_ID
- PRIVATE_KEY, including the -----BEGIN PRIVATE KEY-----\n prefix and \n-----END PRIVATE KEY-----\n suffix.
2) Set up the action "START DETECT FACE IN VIDEO OPERATION" in the workflow.
Inputs Fields :
- VIDEO FILE : .MOV, .MPEG4, .MP4, .AVI, or any ffmpeg decodable video file from the Bubble.io uploader, or a Protocol-relative URLs (//server/video.mov), or a HTTPS video URL (
https://server/video.mov), or a Google Storage URL (gs://bucket/video.mov). See Performance Considerations in the documentation.
Output Fields :
- OPERATION NAME : ID of the operation, to be reused in the "GET DETECT FACE IN VIDEO RESULT".
3) Set up the action "GET DETECT FACE CONTENT IN VIDEO RESULT" in a recurring workflow ('Do every x seconds'), to poll the operation completion status on a regular basis.
Configure this recurring workflow to retrieve the results once the operation DONE status is 'YES', using Only When' Event Condition,
Inputs Fields :
- OPERATION NAME : ID of the operation to poll, returned by "START DETECT FACE IN VIDEO OPERATION" action.
- OUTPUT TYPE : Returned type, must always be set to "RESULT (VIDEO)".
Output Fields :
- RESULT: Returns the operation progress rate, done status and the video duration along with a list of frames and face thumbnails. For each frame, it returns the face attributes and related timestamp.
IMPLEMENTATION EXAMPLE
======================
Feel free to browse the app editor in the Service URL for an implementation example.
ADDITIONAL INFORMATION
======================
> Supported video formats :
https://cloud.google.com/video-intelligence/docs/supported-formats> GOOGLE VIDEO-INTELLIGENCE service limits :
https://cloud.google.com/video-intelligence/quotasTROUBLESHOOTING
================
Any plugin related error will be posted to the the Logs tab, "Server logs" section of your App Editor.
Make sure that "Plugin server side output" and "Plugin server side output" is selected in "Show Advanced".
> Server Logs Details:
https://manual.bubble.io/core-resources/bubbles-interface/logs-tab#server-logsPERFORMANCE CONSIDERATIONS
===========================
GENERAL
-------------
This implementation posts the file data to GOOGLE VIDEO INTELLIGENCE for non-Google Storage URLs (e.g: non-gs://).
Therefore, the maximum allowable file size depends both on the bandwidth between Bubble.io & GOOGLE VIDEO INTELLIGENCE, the highest limit being capped by Bubble.io's Workflow Action maximum execution time to perform this transfer operation.
QUESTIONS ?
===========
Contact us at
[email protected] for any additional feature you would require or support question.