2017-11-08 9 views
2

Azure Media Encoder Standard를 사용하여 비디오를 결합하려고합니다. 작업을 제출할 때두 개 이상의 InputMediaAsset을 Azure Media Encoder 표준 결과 400에 추가

Job.Creator jobCreator = Job.create() 
    .setName(outputAssetName) 
    .addInputMediaAsset("nb:cid:UUID:ID1") 
    .addInputMediaAsset("nb:cid:UUID:ID2") 
    .setPriority(2) 
    .addTaskCreator(task); 

, 이것은 결과 : 푸른 MES를위한 작업을 생성하는 자바 (com.microsoft.azure:azure-media:0.9.7)에서이 코드 조각을 사용하여

다음 오류 :

Nov 08, 2017 6:30:03 PM com.microsoft.windowsazure.services.media.implementation.MediaExceptionProcessor processCatch 
WARNING: com.sun.jersey.api.client.UniformInterfaceException: Client response status: 400 
     com.sun.jersey.api.client.UniformInterfaceException: Client response status: 400 
at com.microsoft.windowsazure.services.media.implementation.MediaBatchOperations.parseBatchResult(MediaBatchOperations.java:368) 
at com.microsoft.windowsazure.services.media.models.Job$Creator.processResponse(Job.java:190) 
at com.microsoft.windowsazure.services.media.entityoperations.EntityRestProxy.create(EntityRestProxy.java:138) 
at com.microsoft.windowsazure.services.media.implementation.MediaExceptionProcessor.create(MediaExceptionProcessor.java:140) 
... 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.lang.Thread.run(Thread.java:748) 

하나의 InputMediaAsset을 사용하면 정상적으로 작동합니다.

두 가지 질문 :

  1. 당신은 자바를 사용하여 둘 이상의 자산을 제출하는 방법의 해결책을 알고 계십니까?
  2. 그렇지 않다면 Azure MES에서 400보다 더 유익한 오류 메시지를 얻을 수있는 방법이 있습니까?

편집

작업 설정 :

{ 
    "Version": 1.0, 
    "Codecs": [ 
    { 
     "Type": "CopyVideo" 
    }, 
    { 
     "Type": "CopyAudio" 
    } 
    ], 
    "Outputs": [ 
    { 
     "FileName": "{Basename}_stitch.mp4", 
     "Format": { 
     "Type": "MP4Format" 
     } 
    } 
    ], 
    "Sources": [ 
    { 
     "AssetID": "nb:cid:UUID:ID1", 
     "StartTime": "00:00:00", 
     "Duration": "00:00:05" 
    }, 
    { 
     "AssetID": "nb:cid:UUID:ID2", 
     "StartTime": "00:00:00", 
     "Duration": "00:00:05" 
    } 
    ] 
} 

나는 적어도 더 나은 오류 메시지를 얻을 수 있는지 확인하기 위해 더 깊이 파고, 나는이있어 :

HTTP/1.1 400 Bad Request 
Content-ID: 2 
X-Content-Type-Options: nosniff 
Cache-Control: no-cache 
DataServiceVersion: 1.0; 
Content-Type: application/xml;charset=utf-8 

<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code /><m:message xml:lang="en-US">Input asset not used - nb:cid:UUID:ID2</m:message></m:error> 

두 번째 입력 자산은 작업 구성에서 지정하더라도 사용되지 않습니다. 작업 구성은 Azure Media Services Explorer에서 제공되며 작동합니다.

답변

0

Java 코드에서 Job.Creator를 호출하기 전에 작업 생성 호출을해야합니다. 다음과 같은 것 :

Task.CreateBatchOperation task = Task.create(mediaProcessor.getId(), taskXml).setConfiguration(taskConfiguration).setName("Stitching Task"); 

위의 경우 taskXml 객체에는 두 개의 입력 애셋에 대한 참조가 있어야합니다. 기본 Java 샘플 코드 (예 : here)는 단일 JobInputAsset 요소에 대한 참조 만 갖습니다. 2 개 (또는 그 이상)의 입력 자산을 사용하고 있으므로, taskXml을 확장하여 추가 JobInputAsset 요소를 포함시켜야합니다.