You can use Encord's Python SDK to re-encode videos. Please see our detailed documentation on re-encoding for more information.

ℹ️

Note

If you data is hosted on a private cloud, Encord requires 'write' permissions to your cloud to re-encode videos.

Use the dataset.re_encode_data() method to re-encode a list of videos, replacing <video1_data_hash> and <video2_data_hash> below with the hashes of the videos to be re-encoded.

# Import dependencies
from encord import EncordUserClient

# Authenticate with Encord using the path to your private key
user_client = EncordUserClient.create_with_ssh_private_key(ssh_private_key_path="<private_key_path>")

# Specify the dataset you want to re-encord data from by using its dataset hash
dataset = user_client.get_dataset("<dataset_hash>")

# Specify the data hashes of the files to be re-encorded
task_id = dataset.re_encode_data(
    [
        "<video1_data_hash>",
        "<video2_data_hash>",
    ]
)

# Print the task ID for the re-encoding job
print(task_id)
1337 

The output will be a list of task ID's of each re-encoding job. The task_id can be used to monitor the progress of the task.

ℹ️

Note

Please ensure that the list contains videos from the same dataset that was used to initialize the EncordClient. Any videos which do not belong to the dataset used for initialisation will be ignored.


Check the status of a re-encoding task

Use the dataset.re_encode_data_status() method to get the status of an existing re-encoding task. Replace task_id in the sample below with the task ID of the re-encoding task you'd like to check the status of.

# Import dependencies
from encord import EncordUserClient

# Authenticate with Encord using the path to your private key
user_client = EncordUserClient.create_with_ssh_private_key(ssh_private_key_path="<private_key_path>")

# Specify the dataset you want to re-encord data from by using its dataset hash
dataset = user_client.get_dataset("<dataset_hash>")

# Define and print the status of the re-encoding task by inserting the re-encoding task's ID
task = (
    dataset.re_encode_data_status("<task_id>")
)
print(task)
ReEncodeVideoTask(
    status="DONE",
    result=[
        ReEncodeVideoTaskResult(
            data_hash="<data_hash>",
            signed_url="<signed_url>",
            bucket_path="<bucket_path>",
        ),
        ...
    ]
) 

The ReEncodeVideoTask object contains a status field, which can take the following values:

  • "SUBMITTED": the task is currently in progress and the status should be checked back again later.

  • "DONE": the task has been completed successfully and the field ‘result’ would contain metadata about the re-encoded video.

  • "ERROR": the task has failed and could not complete the re-encoding.