AWS Elemental MediaConvertEjemplos de en los que se utiliza la versió 3 de AWS SDK para PHP - AWS SDK para PHP

AWS Elemental MediaConvertEjemplos de en los que se utiliza la versió 3 de AWS SDK para PHP

AWS Elemental MediaConvert es un servicio de transcodificación de vídeo basado en archivos con características apropiadas para los medios de difusión. Puede utilizarlo para crear recursos para su difusión y para la entrega de vídeo bajo demanda (VOD) a través de Internet. Para obtener más información, consulte la Guía del usuario de AWS Elemental MediaConvert.

La API PHP para AWS Elemental MediaConvert se expone a través de la clase cliente AWS.MediaConvert. Para más información, consulte Class: AWS.MediaConvert ien la referencia de la API.

Creación y administración de trabajos de transcodificación en AWS Elemental MediaConvert

En este ejemplo, se utiliza el AWS SDK para PHP versión 3 para llamar a AWS Elemental MediaConvert y crear un trabajo de transcodificación. Antes de comenzar, debe cargar el vídeo de entrada en el bucket de Amazon S3 habilitado para el almacenamiento de entrada. Para obtener una lista de los códecs y contenedores compatibles con la entrada de vídeo, consulteCódecs y contenedores de entrada compatibles AWS Elemental MediaConvert Guía del usuario..

Los siguientes ejemplos muestran cómo:

  • Crear trabajos de transcodificación en AWS Elemental MediaConvert. CreateJob.

  • Cancelar un trabajo de transcodificación de la cola de AWS Elemental MediaConvert. CancelJob

  • Recuperar el JSON de un trabajo de transcodificación finalizado. GetJob

  • Recuperar una matriz JSON con un máximo de 20 de los últimos trabajos creados. ListJobs

Todo el código de ejemplo de AWS SDK para PHP está disponible aquí en GitHub.

Credenciales

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en Autenticación con AWS mediante la versión 3 de AWS SDK para PHP. A continuación, importe AWS SDK para PHP, como se indica en Instalación del AWS SDK para PHP versión 3.

Para acceder al cliente de MediaConvert, cree un rol de IAM que dé acceso en AWS Elemental MediaConvert a sus archivos de entrada y a los buckets de Amazon S3 donde se almacenan sus archivos de salida. Para obtener más información, consulte Configurar los permisos de IAM in the AWS Elemental MediaConvert Guía del usuario.

Crear un cliente

Configure el AWS SDK para PHP mediante la creación de un cliente de MediaConvert, con la región para su código. En este ejemplo, la región se establece en us-west-2.

Importaciones

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\MediaConvert\MediaConvertClient;

Código de muestra

$mediaConvertClient = new MediaConvertClient([ 'version' => '2017-08-29', 'region' => 'us-east-2', 'profile' => 'default' ]);

Definición de un trabajo de transcodificación sencillo

Cree el JSON que define los parámetros del trabajo de transcodificación.

Estos parámetros son detallados. Puede utilizar la consola de AWS Elemental MediaConvert para generar los parámetros JSON del trabajo eligiendo la configuración del trabajo en la consola y, a continuación, eligiendo Mostrar JSON del trabajo en la parte inferior de la sección Trabajo. En este ejemplo, se muestra el JSON de un trabajo sencillo.

Código de muestra

$jobSetting = [ "OutputGroups" => [ [ "Name" => "File Group", "OutputGroupSettings" => [ "Type" => "FILE_GROUP_SETTINGS", "FileGroupSettings" => [ "Destination" => "s3://OUTPUT_BUCKET_NAME/" ] ], "Outputs" => [ [ "VideoDescription" => [ "ScalingBehavior" => "DEFAULT", "TimecodeInsertion" => "DISABLED", "AntiAlias" => "ENABLED", "Sharpness" => 50, "CodecSettings" => [ "Codec" => "H_264", "H264Settings" => [ "InterlaceMode" => "PROGRESSIVE", "NumberReferenceFrames" => 3, "Syntax" => "DEFAULT", "Softness" => 0, "GopClosedCadence" => 1, "GopSize" => 90, "Slices" => 1, "GopBReference" => "DISABLED", "SlowPal" => "DISABLED", "SpatialAdaptiveQuantization" => "ENABLED", "TemporalAdaptiveQuantization" => "ENABLED", "FlickerAdaptiveQuantization" => "DISABLED", "EntropyEncoding" => "CABAC", "Bitrate" => 5000000, "FramerateControl" => "SPECIFIED", "RateControlMode" => "CBR", "CodecProfile" => "MAIN", "Telecine" => "NONE", "MinIInterval" => 0, "AdaptiveQuantization" => "HIGH", "CodecLevel" => "AUTO", "FieldEncoding" => "PAFF", "SceneChangeDetect" => "ENABLED", "QualityTuningLevel" => "SINGLE_PASS", "FramerateConversionAlgorithm" => "DUPLICATE_DROP", "UnregisteredSeiTimecode" => "DISABLED", "GopSizeUnits" => "FRAMES", "ParControl" => "SPECIFIED", "NumberBFramesBetweenReferenceFrames" => 2, "RepeatPps" => "DISABLED", "FramerateNumerator" => 30, "FramerateDenominator" => 1, "ParNumerator" => 1, "ParDenominator" => 1 ] ], "AfdSignaling" => "NONE", "DropFrameTimecode" => "ENABLED", "RespondToAfd" => "NONE", "ColorMetadata" => "INSERT" ], "AudioDescriptions" => [ [ "AudioTypeControl" => "FOLLOW_INPUT", "CodecSettings" => [ "Codec" => "AAC", "AacSettings" => [ "AudioDescriptionBroadcasterMix" => "NORMAL", "RateControlMode" => "CBR", "CodecProfile" => "LC", "CodingMode" => "CODING_MODE_2_0", "RawFormat" => "NONE", "SampleRate" => 48000, "Specification" => "MPEG4", "Bitrate" => 64000 ] ], "LanguageCodeControl" => "FOLLOW_INPUT", "AudioSourceName" => "Audio Selector 1" ] ], "ContainerSettings" => [ "Container" => "MP4", "Mp4Settings" => [ "CslgAtom" => "INCLUDE", "FreeSpaceBox" => "EXCLUDE", "MoovPlacement" => "PROGRESSIVE_DOWNLOAD" ] ], "NameModifier" => "_1" ] ] ] ], "AdAvailOffset" => 0, "Inputs" => [ [ "AudioSelectors" => [ "Audio Selector 1" => [ "Offset" => 0, "DefaultSelection" => "NOT_DEFAULT", "ProgramSelection" => 1, "SelectorType" => "TRACK", "Tracks" => [ 1 ] ] ], "VideoSelector" => [ "ColorSpace" => "FOLLOW" ], "FilterEnable" => "AUTO", "PsiControl" => "USE_PSI", "FilterStrength" => 0, "DeblockFilter" => "DISABLED", "DenoiseFilter" => "DISABLED", "TimecodeSource" => "EMBEDDED", "FileInput" => "s3://INPUT_BUCKET_AND_FILE_NAME" ] ], "TimecodeConfig" => [ "Source" => "EMBEDDED" ] ];

Creación de un trabajo

Después de crear el JSON con los parámetros del trabajo, llame al método createJob invocando un AWS.MediaConvert service object y pasando los parámetros. El ID del trabajo creado se devuelve en los datos de la respuesta.

Código de muestra

try { $result = $mediaConvertClient->createJob([ "Role" => "IAM_ROLE_ARN", "Settings" => $jobSetting, //JobSettings structure "Queue" => "JOB_QUEUE_ARN", "UserMetadata" => [ "Customer" => "Amazon" ], ]); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

Recuperación de un trabajo

Con el JobID que se devuelve al llamar a createjob, se pueden obtener descripciones detalladas de los trabajos recientes en formato JSON.

Código de muestra

$mediaConvertClient = new MediaConvertClient([ 'version' => '2017-08-29', 'region' => 'us-east-2', 'profile' => 'default' ]); try { $result = $mediaConvertClient->getJob([ 'Id' => 'JOB_ID', ]); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

Cancelación de un trabajo

Con el JobID que se devuelve al llamar a createjob, se puede cancelar un trabajo mientras esté en la cola. No se pueden cancelar los trabajos cuya transcodificación ya ha comenzado.

Código de muestra

$mediaConvertClient = new MediaConvertClient([ 'version' => '2017-08-29', 'region' => 'us-east-2', 'profile' => 'default' ]); try { $result = $mediaConvertClient->cancelJob([ 'Id' => 'JOB_ID', // REQUIRED The Job ID of the job to be cancelled. ]); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

Listado de los trabajos de transcodificación recientes

Cree el JSON con los parámetros, incluidos los valores que especifican si se debe ordenar la lista en orden ascendente (ASCENDING) o descendente (DESCENDING), el ARN de la cola de trabajos que se va comprobar y el estado de los trabajos que se deben incluir. Esto devuelve hasta 20 trabajos. Para recuperar los siguientes 20 trabajos más recientes, utilice la cadena nextToken devuelta con el resultado.

Código de muestra

$mediaConvertClient = new MediaConvertClient([ 'version' => '2017-08-29', 'region' => 'us-east-2', 'profile' => 'default' ]); try { $result = $mediaConvertClient->listJobs([ 'MaxResults' => 20, 'Order' => 'ASCENDING', 'Queue' => 'QUEUE_ARN', 'Status' => 'SUBMITTED', // 'NextToken' => '<string>', //OPTIONAL To retrieve the twenty next most recent jobs ]); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }