Cette rubrique présente des exemples d'utilisation des opérations API du module de traitement des médias. Ces opérations sont intégrées au SDK ApsaraVideo VOD pour Python. Appelez ces opérations pour soumettre des tâches de transcodage et de capture d'images, interroger les données de capture et prétraiter les vidéos dans le studio de production.
Remarques sur l'utilisation
Tous les exemples de cette rubrique utilisent une paire AccessKey pour initialiser le client.
Pour obtenir le détail des paramètres de requête et de réponse, accédez à Alibaba Cloud OpenAPI Explorer et ouvrez l'onglet API Documentations.
Pour consulter des exemples de code SDK pour d'autres opérations API, rendez-vous sur Alibaba Cloud OpenAPI Explorer. Dans l'onglet Parameters, spécifiez les paramètres et lancez l'appel. Sélectionnez ensuite la version du SDK et le langage dans l'onglet SDK Sample Code pour afficher et télécharger le code.
Les exemples de cette rubrique utilisent le SDK V1.0. Pour les exemples V2.0, sélectionnez la version appropriée du SDK dans OpenAPI Explorer.
Initialisation d'un client
Avant d'utiliser le SDK, initialisez un client. Pour plus d'informations, consultez la section Initialisation.
Soumission d'une tâche de transcodage sans chiffrement
Appelez l'opération SubmitTranscodeJobs pour soumettre une tâche de transcodage sans chiffrement.
Exemple de code :
Le code suivant illustre un transcodage sans chiffrement. Pour plus d'informations sur le chiffrement vidéo pris en charge par Alibaba Cloud, consultez la section Chiffrement propriétaire Alibaba Cloud.
"""
* Construct watermark parameters to be overridden. You can override only the URL of an image watermark and the content of a text watermark.
* Make sure that the ID of the watermark that you want to overwrite is associated with the ID of the transcoding template that you use. The ID of the transcoding template is specified by TranscodeTemplateId.
* You can call this operation to add only a watermark whose ID is associated with the ID of the transcoding template that you use.
"""
def build_override_params():
# Override watermarks.
watermarks = []
// Override an image watermark. Example of the URL of an image file: https://192.168.0.0/16/watermarks/sample****.png.
watermark1 = {'WatermarkId': '<watermarkId>', 'FileUrl': '<your File URL>'}
watermarks.append(watermark1)
# Override a text watermark.
watermark2 = {'WatermarkId': '<watermarkId>', 'Content': 'new Text'}
watermarks.append(watermark2)
return {'Watermarks': watermarks}
""" Start transcoding. """
from aliyunsdkvod.request.v20170321 import SubmitTranscodeJobsRequest
def normal_submit_transcode_jobs(clt):
request = SubmitTranscodeJobsRequest.SubmitTranscodeJobsRequest()
# Specify the ID of the video that you want to transcode.
request.set_VideoId('<videoId>')
# Specify the transcoding template group.
request.set_TemplateGroupId('<templateGroupId>')
"""
# Configure optional parameters to overwrite watermarks.
overrideParams = build_override_params()
request.set_OverrideParams(json.dumps(overrideParams))
"""
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
jobs = normal_submit_transcode_jobs(clt)
print(jobs['TranscodeJobs']['TranscodeJob'])
print(json.dumps(jobs, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
Soumission d'une tâche de transcodage avec chiffrement HLS activé
Appelez l'opération SubmitTranscodeJobs pour soumettre une tâche de transcodage avec le chiffrement HLS activé.
Exemple de code :
Le code suivant illustre un transcodage avec chiffrement HLS activé. Pour plus d'informations, consultez la section Chiffrement HLS.
"""
* Optional configurations of HLS encryption. If you do not use HLS encryption, these configurations are not required.
"""
from aliyunsdkvod.request.v20170321 import GenerateKMSDataKeyRequest
from aliyunsdkcore.http import protocol_type
def build_encrypt_config(clt):
try:
# Generate a random data key for encryption. The response contains the plaintext and ciphertext of the data key.
# Specify only the ciphertext for HLS encryption.
request = GenerateKMSDataKeyRequest.GenerateKMSDataKeyRequest()
request.set_protocol_type(protocol_type.HTTPS)
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
// The URI of the operation that is used to decrypt the data key. To obtain the URI, concatenate the URL of the decryption service and the ciphertext of the data key. The ciphertext to decrypt varies among videos. Take note that you must deploy the decryption service.
# You can customize the name of the Ciphertext parameter. The name in this example is only for reference.
# Example of decryptKeyUri: http://example.aliyundoc.com/decrypt?' + 'Ciphertext=' + response['CiphertextBlob.
decryptKeyUri = ['<your decryptKeyUri>']
return {'DecryptKeyUri': decryptKeyUri, 'KeyServiceType': 'KMS', 'CipherText': response['CiphertextBlob']}
except Exception as e:
print(e)
#print(traceback.format_exc())
return None
""" Start transcoding. """
from aliyunsdkvod.request.v20170321 import SubmitTranscodeJobsRequest
def hlsencrypt_submit_transcode_jobs(clt):
request = SubmitTranscodeJobsRequest.SubmitTranscodeJobsRequest()
# Specify the ID of the video that you want to transcode.
request.set_VideoId('<videoId>')
# Specify the transcoding template group.
request.set_TemplateGroupId('<templateGroupId>')
# Use Key Management Service (KMS) to generate a random encryption key.
encryptConfig = build_encrypt_config(clt)
if encryptConfig is not None:
request.set_EncryptConfig(json.dumps(encryptConfig))
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
jobs = hlsencrypt_submit_transcode_jobs(clt)
print(jobs['TranscodeJobs']['TranscodeJob'])
print(json.dumps(jobs, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
Soumission d'une tâche de capture d'images
Appelez l'opération SubmitSnapshotJob pour soumettre une tâche de capture d'images.
Exemple de code :
Pour savoir comment créer un modèle de capture d'images, consultez la section Création d'un modèle de capture d'images.
from aliyunsdkvod.request.v20170321 import SubmitSnapshotJobRequest
def submit_snapshot_job(clt):
request = SubmitSnapshotJobRequest.SubmitSnapshotJobRequest()
# Specify the ID of the video from which you want to capture snapshots.
request.set_VideoId('<videoId>')
# Specify the ID of the snapshot template.
#request.set_SnapshotTemplateId('<snapshotTemplateId>')
# If you specify the ID of the snapshot template, the following parameters are ignored:
request.set_Count(50)
request.set_SpecifiedOffsetTime(0)
request.set_Interval(1)
request.set_Width(200)
request.set_Height(200)
# Configure image sprite-related parameters. This step is optional.
spriteSnapshotConfig = {'CellWidth': 120, 'CellHeight': 68, 'Columns': 3,
'Lines': 10, 'Padding': 20, 'Margin': 50}
# Specify whether to retain the source image after an image sprite is generated.
spriteSnapshotConfig['KeepCellPic'] = 'keep'
spriteSnapshotConfig['Color'] = 'tomato'
request.set_SpriteSnapshotConfig(json.dumps(spriteSnapshotConfig))
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
job = submit_snapshot_job(clt)
print(json.dumps(job, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
Interrogation des données de capture d'images
Appelez l'opération ListSnapshots pour interroger les données de capture d'images.
Prétraitement des vidéos dans le studio de production
Appelez l'opération SubmitPreprocessJobs pour prétraiter les vidéos dans le studio de production.