Azure 媒体服务作业长时间处于处理状态
Azure media service job stay long in processing status
我正在开发 C# .NET 5 Web API。我需要为视频创建缩略图,我是使用 Azure 媒体服务完成的,但是当我提交作业时,它处于状态处理很长一段时间。我需要升级我的服务计划还是有其他解决方案?
这是我的代码:
首先,我创建转换。
TransformOutput[] outputs = new TransformOutput[]
{
// Create a new TransformOutput with a custom Standard Encoder Preset
// This demonstrates how to create custom codec and layer output settings
new TransformOutput(
new StandardEncoderPreset(
codecs: new Codec[]
{
// Generate a set of PNG thumbnails
new PngImage(
start: "5%",
step: "100%",
range: "1",
layers: new PngLayer[]{
new PngLayer(
width: "50%",
height: "50%"
)
}
)
},
new PngFormat(
filenamePattern: "videothumb-{Index}{Extension}"
)
}
),
onError: OnErrorType.StopProcessingJob,
relativePriority: Priority.Normal
)
};
// Create the custom Transform with the outputs defined above
transform = client.Transforms.CreateOrUpdate(resourceGroupName, accountName, transformName, outputs, description);
然后我创建并提交我的作业。
string uniqueness = Guid.NewGuid().ToString().Substring(0, 13);
string jobName = "job-" + uniqueness;
string inputAssetName = "input-" + uniqueness;
string outputAssetName = "output-" + uniqueness;
// The input to the Job is a HTTPS URL pointing to an MP4 file
var input = new JobInputHttp(
files: new List<String> { blobUrl }
);
Asset outputAsset = CreateOutputAsset(client, config.ResourceGroup, config.AccountName, outputAssetName);
string thumbContainerName = $"asset-{outputAsset.AssetId}";
Job job = SubmitJob(client, config.ResourceGroup, config.AccountName, transformName, jobName, input, outputAsset.Name);
DateTime startedTime = DateTime.Now;
job = WaitForJobToFinish(client, config.ResourceGroup, config.AccountName, transformName, jobName);
TimeSpan elapsed = DateTime.Now - startedTime;
elapsed
在 15 到 25 秒之间。
当我转到 Azure 门户时,我可以看到我的作业长时间处于处理状态。我要处理的视频持续 4 秒
AMS 目前未针对处理短视频或仅从视频中提取缩略图进行优化。您看到的经过时间是预期的。如果您只是需要从非常短的视频中提取缩略图,从速度的角度来看,您最好直接使用 FFmpeg 等媒体管道来完成此操作。您看到的 AMS 运行时间的大部分很可能是由于设置 VM 来处理视频的时间。
对于需要 return 超快的基于 FFMPEG 的简单函数,您可以考虑使用像我们提供的示例这样的 Azure 函数。
https://github.com/Azure-Samples/media-services-v3-dotnet-core-functions-integration/blob/master/Encoding/Encoding/VodFunctions/ffmpeg-encoding.cs
我正在开发 C# .NET 5 Web API。我需要为视频创建缩略图,我是使用 Azure 媒体服务完成的,但是当我提交作业时,它处于状态处理很长一段时间。我需要升级我的服务计划还是有其他解决方案? 这是我的代码: 首先,我创建转换。
TransformOutput[] outputs = new TransformOutput[]
{
// Create a new TransformOutput with a custom Standard Encoder Preset
// This demonstrates how to create custom codec and layer output settings
new TransformOutput(
new StandardEncoderPreset(
codecs: new Codec[]
{
// Generate a set of PNG thumbnails
new PngImage(
start: "5%",
step: "100%",
range: "1",
layers: new PngLayer[]{
new PngLayer(
width: "50%",
height: "50%"
)
}
)
},
new PngFormat(
filenamePattern: "videothumb-{Index}{Extension}"
)
}
),
onError: OnErrorType.StopProcessingJob,
relativePriority: Priority.Normal
)
};
// Create the custom Transform with the outputs defined above
transform = client.Transforms.CreateOrUpdate(resourceGroupName, accountName, transformName, outputs, description);
然后我创建并提交我的作业。
string uniqueness = Guid.NewGuid().ToString().Substring(0, 13);
string jobName = "job-" + uniqueness;
string inputAssetName = "input-" + uniqueness;
string outputAssetName = "output-" + uniqueness;
// The input to the Job is a HTTPS URL pointing to an MP4 file
var input = new JobInputHttp(
files: new List<String> { blobUrl }
);
Asset outputAsset = CreateOutputAsset(client, config.ResourceGroup, config.AccountName, outputAssetName);
string thumbContainerName = $"asset-{outputAsset.AssetId}";
Job job = SubmitJob(client, config.ResourceGroup, config.AccountName, transformName, jobName, input, outputAsset.Name);
DateTime startedTime = DateTime.Now;
job = WaitForJobToFinish(client, config.ResourceGroup, config.AccountName, transformName, jobName);
TimeSpan elapsed = DateTime.Now - startedTime;
elapsed
在 15 到 25 秒之间。
当我转到 Azure 门户时,我可以看到我的作业长时间处于处理状态。我要处理的视频持续 4 秒
AMS 目前未针对处理短视频或仅从视频中提取缩略图进行优化。您看到的经过时间是预期的。如果您只是需要从非常短的视频中提取缩略图,从速度的角度来看,您最好直接使用 FFmpeg 等媒体管道来完成此操作。您看到的 AMS 运行时间的大部分很可能是由于设置 VM 来处理视频的时间。
对于需要 return 超快的基于 FFMPEG 的简单函数,您可以考虑使用像我们提供的示例这样的 Azure 函数。 https://github.com/Azure-Samples/media-services-v3-dotnet-core-functions-integration/blob/master/Encoding/Encoding/VodFunctions/ffmpeg-encoding.cs