# MediaPipe graph that performs face mesh on desktop with TensorFlow Lite # on CPU. # Path to the input video file. (string) input_side_packet: "input_video_path" # Path to the output video file. (string) input_side_packet: "output_video_path" # max_queue_size limits the number of packets enqueued on any input stream # by throttling inputs to the graph. This makes the graph only process one # frame per time. max_queue_size: 1 # Decodes an input video file into images and a video header. node { calculator: "OpenCvVideoDecoderCalculator" input_side_packet: "INPUT_FILE_PATH:input_video_path" output_stream: "VIDEO:input_video" output_stream: "VIDEO_PRESTREAM:input_video_header" } # Defines side packets for further use in the graph. node { calculator: "ConstantSidePacketCalculator" output_side_packet: "PACKET:0:num_faces" output_side_packet: "PACKET:1:with_attention" node_options: { [type.googleapis.com/mediapipe.ConstantSidePacketCalculatorOptions]: { packet { int_value: 1 } packet { bool_value: true } } } } # Subgraph that detects faces and corresponding landmarks. node { calculator: "FaceLandmarkFrontCpu" input_stream: "IMAGE:input_video" input_side_packet: "NUM_FACES:num_faces" input_side_packet: "WITH_ATTENTION:with_attention" output_stream: "LANDMARKS:multi_face_landmarks" output_stream: "ROIS_FROM_LANDMARKS:face_rects_from_landmarks" output_stream: "DETECTIONS:face_detections" output_stream: "ROIS_FROM_DETECTIONS:face_rects_from_detections" } # Subgraph that renders face-landmark annotation onto the input video. node { calculator: "FaceRendererCpu" input_stream: "IMAGE:input_video" input_stream: "LANDMARKS:multi_face_landmarks" input_stream: "NORM_RECTS:face_rects_from_landmarks" input_stream: "DETECTIONS:face_detections" output_stream: "IMAGE:output_video" } # Encodes the annotated images into a video file, adopting properties specified # in the input video header, e.g., video framerate. node { calculator: "OpenCvVideoEncoderCalculator" input_stream: "VIDEO:output_video" input_stream: "VIDEO_PRESTREAM:input_video_header" input_side_packet: "OUTPUT_FILE_PATH:output_video_path" node_options: { [type.googleapis.com/mediapipe.OpenCvVideoEncoderCalculatorOptions]: { codec: "avc1" video_format: "mp4" } } }