With a video input, the Predict API response will return a list of predicted concepts for every frame of a video. By default, video is processed at 1 frame per second (but this is configurable in the predict request). This means you will receive a list of concepts for every second of your video.
You can run Predict on your video using a select number of Clarifai Models. The models that are currently supported are: Apparel, Food, General, NSFW, Travel, and Wedding. You make an API call by providing the {model-id} parameter and your data parameter is video instead of image.
Video limits
The Predict API has limits to the length and size it can support. A video, uploaded through URL, can be anywhere up to 80MB in size or 10mins in length. When a video is sent through by bytes, the Predict API can support 10MB in size.
If your video exceeds the limits, please follow our tutorial on how to break up a large video into smaller components, and send those into the Video API. Otherwise, the processing will time out and you will receive an error response.
Via URL
Below is an example of how you would send video URLs and receive back predictions from the general model.
# Insert here the initialization code as outlined on this page:# https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructionspost_model_outputs_response = stub.PostModelOutputs( service_pb2.PostModelOutputsRequest( model_id="{THE_MODEL_ID}", version_id="{THE_MODEL_VERSION_ID}", # This is optional. Defaults to the latest model version. inputs=[ resources_pb2.Input( data=resources_pb2.Data( video=resources_pb2.Video( url="https://samples.clarifai.com/beer.mp4" ) ) ) ] ), metadata=metadata)if post_model_outputs_response.status.code != status_code_pb2.SUCCESS:raiseException("Post model outputs failed, status: "+ post_model_outputs_response.status.description)# Since we have one input, one output will exist here.output = post_model_outputs_response.outputs[0]# A separate prediction is available for each "frame".for frame in output.data.frames:print("Predicted concepts on frame "+str(frame.frame_info.time) +":")for concept in frame.data.concepts:print("\t%s%.2f"% (concept.name, concept.value))
<?php# Insert here the initialization code as outlined on this page:# https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions///////////////////////////////////////////////////////////////////////////////// Specifying the Request Data/////////////////////////////////////////////////////////////////////////////////// In the Clarifai platform a video is defined by a special Video object.// There are several ways in which an Video object can be populated including// by url and video bytes (base64).//$video =newVideo(['url'=>'https://samples.clarifai.com/beer.mp4']);//// After a Video object is created, a Data object is constructed around it.// The Data object offers a container that contains additional video independent// metadata. In this particular use case, no other metadata is needed to be// specified.//$data =newData(['video'=> $video]);