AWS Elemental MediaConvert 使用 第 3 AWS SDK for PHP 版的範例 - AWS SDK for PHP

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS Elemental MediaConvert 使用 第 3 AWS SDK for PHP 版的範例

AWS Elemental MediaConvert 是以檔案為基礎的影片轉碼服務,具有廣播級功能。您可以使用它來建立用於廣播的資產,以及用於透過網際網路進行 video-on-demand(VOD) 交付。如需詳細資訊,請參閱《AWS Elemental MediaConvert 使用者指南》https://docs.aws.amazon.com/mediaconvert/latest/ug/

PHP API 的 透過AWS.MediaConvert用戶端類別 AWS Elemental MediaConvert 公開。如需詳細資訊,請參閱 API 參考Class: AWS.MediaConvert中的 。

在 中建立和管理轉碼任務 AWS Elemental MediaConvert

在此範例中,您可以使用 AWS SDK for PHP 版本 3 來呼叫 AWS Elemental MediaConvert 和建立轉碼任務。在開始之前,您需要將輸入影片上傳至您為輸入儲存體佈建的 Amazon S3 儲存貯體。如需支援的輸入視訊轉碼器和容器清單,請參閱 AWS Elemental MediaConvert 使用者指南 中的支援的輸入轉碼器和容器

下列範例示範如何:

  • 在 中建立轉碼任務 AWS Elemental MediaConvert。CreateJob

  • 從 AWS Elemental MediaConvert 佇列取消轉碼任務。 CancelJob

  • 針對已完成JSON的轉碼任務擷取 。 GetJob

  • 擷取最多 20 個最近建立任務的JSON陣列。 ListJobs

所有 的範例程式碼 AWS SDK for PHP 都可在 上取得 GitHub

登入資料

在執行範例程式碼之前,請先設定您的 AWS 憑證,如 中所述登入資料。然後匯入 AWS SDK for PHP,如 中所述基本使用

若要存取 MediaConvert 用戶端,請建立IAM角色,以 AWS Elemental MediaConvert 存取您的輸入檔案和儲存輸出檔案的 Amazon S3 儲存貯體。如需詳細資訊,請參閱 AWS Elemental MediaConvert 使用者指南 中的設定IAM許可

建立用戶端

透過建立 MediaConvert 用戶端,並設定程式碼的區域 AWS SDK for PHP 來設定 。在這個範例中,區域設為 us-west-2。

匯入

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

範例程式碼

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

定義簡單的轉碼任務

建立JSON定義轉碼任務參數的 。

這些參數是詳細的。您可以使用AWS Elemental MediaConvert 主控台,在主控台中選擇您的任務設定,然後選擇在任務區段底部顯示JSON任務,以產生任務JSON參數。此範例顯示簡單任務JSON的 。

範例程式碼

$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" ] ];

建立任務。

建立任務參數 後JSON,請叫用 並傳遞參數AWS.MediaConvert service object,以呼叫 createJob 方法。回應資料中會傳回所建立任務的 ID。

範例程式碼

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"; }

擷取任務

當您呼叫 createjob 時傳回的 JobID,您可以JSON取得最近任務的詳細說明。

範例程式碼

$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"; }

取消任務

使用呼叫 createjob 時傳回的 JobID,您可以取消仍在佇列中的任務。您無法取消已開始轉碼的任務。

範例程式碼

$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"; }

列出最近的轉碼任務

建立參數 JSON,包括指定是否在 中排序清單的值ASCENDING,或DESCENDING指定順序、要檢查的任務佇列ARN的 ,以及要包含的任務狀態。這會傳回最多 20 個任務。若要擷取下一個 20 個任務,請使用傳回結果的 nextToken 字串。

範例程式碼

$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"; }