本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Elemental MediaConvert 使用第 3 AWS SDK for PHP 版的範例
AWS Elemental MediaConvert 是以檔案為基礎的影片轉碼服務,具有廣播級功能。您可以將其用於建立跨網際網路的廣播資產及隨選視訊 (VOD) 交付資產。如需詳細資訊,請參閱「AWS Elemental MediaConvert 使用者指南」。
的 PHP API 透過AWS.MediaConvert用戶端類別 AWS Elemental MediaConvert 公開。如需詳細資訊,請參閱 API 參考Class: AWS.MediaConvert中的 。
在 中建立和管理轉碼任務 AWS Elemental MediaConvert
在此範例中,您使用第 3 AWS SDK for PHP 版來呼叫 AWS Elemental MediaConvert 和建立轉碼任務。開始之前,您需要將輸入視訊上傳至您為輸入儲存體佈建的 Amazon S3 儲存貯體。如需支援的輸入視訊轉碼器和容器清單,請參閱AWS Elemental MediaConvert 《 使用者指南》中的支援的輸入轉碼器和容器。
下列範例示範如何:
您可以在 GitHub 上 AWS SDK for PHP 取得 的所有範例程式碼。 GitHub
憑證
在執行範例程式碼之前,請先設定您的 AWS 登入資料,如中所述AWS 使用第 3 AWS SDK for PHP 版向 驗證。然後匯入 AWS SDK for PHP,如 中所述安裝第 3 AWS SDK for PHP 版。
若要存取 MediaConvert 用戶端,請建立可讓您 AWS Elemental MediaConvert 存取輸入檔案的 IAM 角色,以及存放輸出檔案的 Amazon S3 儲存貯體。如需詳細資訊,請參閱《 使用者指南》中的設定 IAM 許可。 AWS Elemental MediaConvert
建立用戶端
AWS SDK for PHP 使用程式碼的區域建立 MediaConvert 用戶端來設定 。在這個範例中,區域設為 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 主控台
範例程式碼
$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"; }