2016-07-25 5 views
3

Azureメディアサービスで新規に作成し、phpで試してみます。複数のビットレートを使用してリモートでファイルをアップロードすることはできますが、サポートされていないことを示しています。それはアクセスするためのURLを生成しますが、MPE_FEATURE_USAGE_FORBIDDENを表示します。Azureダッシュボードからのパブリックアクセスも有効にしていますが、なぜそれがそれを示しているのかわかりません。それで私はAdaptive bitrateをコードのようにしようとしましたが、現在はそれをエンコードしてエラーを表示することさえできません。複数のビットレートでは、エンコーダエラーの場合も考えられます。Azureメディアサービスsdkが、Adaptive Bitrate MP4にエンコードする際にエラーを返します。

function encodeToAdaptiveBitrateMP4Set($restProxy, $asset) { 
// 2.1 retrieve the latest 'Media Encoder Standard' processor version 
$mediaProcessor = $restProxy->getLatestMediaProcessor('Media Encoder Standard'); 

print "Using Media Processor: {$mediaProcessor->getName()} version {$mediaProcessor->getVersion()}\r\n"; 

// 2.2 Create the Job; this automatically schedules and runs it 
$outputAssetName = "Encoded " . $asset->getName(); 
$outputAssetCreationOption = Asset::OPTIONS_NONE; 
$taskBody = '<?xml version="1.0" encoding="utf-8"?><taskBody><inputAsset>JobInputAsset(0)</inputAsset><outputAsset assetCreationOptions="' . $outputAssetCreationOption . '" assetName="' . $outputAssetName . '">JobOutputAsset(0)</outputAsset></taskBody>'; 

$task = new Task($taskBody, $mediaProcessor->getId(), TaskOptions::NONE); 
$task->setConfiguration('H264 Adaptive Bitrate MP4 Set 1080p'); 

$job = new Job(); 
$job->setName('Encoding Job'); 

$job = $restProxy->createJob($job, array($asset), array($task)); 

print "Created Job with Id: {$job->getId()}\r\n"; 

// 2.3 Check to see if the Job has completed 
$result = $restProxy->getJobStatus($job); 

$jobStatusMap = array('Queued', 'Scheduled', 'Processing', 'Finished', 'Error', 'Canceled', 'Canceling'); 

while($result != Job::STATE_FINISHED && $result != Job::STATE_ERROR && $result != Job::STATE_CANCELED) { 
    print "Job status: {$jobStatusMap[$result]}\r\n"; 
    sleep(5); 
    $result = $restProxy->getJobStatus($job); 
} 

if ($result != Job::STATE_FINISHED) { 
    print "The job has finished with a wrong status: {$jobStatusMap[$result]}\r\n"; 
    exit(-1); 
} 

print "Job Finished!\r\n"; 

// 2.4 Get output asset 
$outputAssets = $restProxy->getJobOutputMediaAssets($job); 
$encodedAsset = $outputAssets[0]; 

print "Asset encoded: name={$encodedAsset->getName()} id={$encodedAsset->getId()}\r\n"; 

return $encodedAsset; 

}

任意の助けが理解されるであろう。 ありがとう!

+0

で見つけることができます。使用したプリセットはhttps://msdn.microsoft.com/library/azure/mt269960.aspx?f=255&MSPPError=-2147217396にリストされていないようです –

答えて

2

特定のメディアプロセッサに間違ったプリセットを使用しています。あなたの仕事のエンコードは、おそらくのようなもので失敗:

"An error has occurred. Stage: ParsePreset. Code: Microsoft.Cloud.Media.Encoding.PresetException. 

Microsoft.Cloud.Media.Encoding.PresetException: Invalid Preset String: H264 Adaptive Bitrate MP4 Set 1080p" 

プリセット「H264マルチビットレート1080」でエンコーダ「Mediaエンコーダ標準」を使用してみてください。 Garyが述べたように、サポートされているプリセット名の完全なリストはhttps://msdn.microsoft.com/library/azure/mt269960.aspx?f=255&MSPPError=-2147217396

関連する問題