正在中使用Windows Azure Media Services SDK.NET,如何使用自定义编码参数而不是预设字符

本文关键字:参数 编码 自定义 何使用 字符 Windows Azure NET SDK Services Media | 更新日期: 2023-09-27 17:59:45

首先,一些背景信息。

我有一个基本上取自这里的代码:

http://channel9.msdn.com/Series/Windows-Azure-Media-Services-Tutorials/Introduction-to-dynamic-packaging

我做了一些修改,因为代码开箱后运行得不太好。无论如何,该代码将源视频文件上传到Azure,使用为Media Services Encoder预设的任务对其进行编码,并将播放URL输出到屏幕以进行平滑流式处理和HLS播放。

创建编码任务的代码如下:

ITask encodeTask = job.Tasks.AddNew("Encoding", processor, "H264 Adaptive Bitrate MP4 Set SD 16x9", TaskOptions.None);

我不确定,但我猜这个预设意味着动态包装。

现在,问题是:如何准确地指定编码参数,例如每个质量级别的不同视频分辨率和比特率,然后是否启用CABAC、b帧、封闭GOP,我还需要2秒的片段用于平滑流式传输,10秒的片段用作HLS。

如何做到这一点?有东西告诉我应该将一些XML格式的字符串传递给作业的配置参数。任务。AddNew方法。如果这是真的,建议使用什么方法来创建XML?

谢谢!

正在中使用Windows Azure Media Services SDK.NET,如何使用自定义编码参数而不是预设字符

您可以包含xml文件,并可以根据您的要求修改xml文件,您可以在此处找到"H264自适应比特率MP4 Set SD 16x9"编码格式的xml文件

        var inputAsset = context.Assets.Where(a => a.Id == inputAssetId).FirstOrDefault();
        if (inputAsset == null)
            throw new ArgumentException("Could not find assetId: " + inputAssetId);
        var encodingPreset = "H264 Adaptive Bitrate MP4 Set SD 16x9"; // <a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj129582.aspx#H264Encoding">http://msdn.microsoft.com/en-us/library/windowsazure/jj129582.aspx#H264Encoding</a>
        var encodingPresetConfig = File.ReadAllText(@"D:'WAMS'DynamicPackagingUpload'DynamicPackagingUpload'DynamicPackagingUpload'Encoding.xml");
        IJob job = context.Jobs.Create("Encoding " + inputAsset.Name + " to " + encodingPreset);
        IMediaProcessor latestWameMediaProcessor = (from p in context.MediaProcessors where p.Name == "Windows Azure Media Encoder" select p).ToList()
                                                                     .OrderBy(wame => new Version(wame.Version)).LastOrDefault();
        ITask encodeTask = job.Tasks.AddNew("Encoding", latestWameMediaProcessor, encodingPresetConfig, TaskOptions.None);
        encodeTask.InputAssets.Add(inputAsset);
        encodeTask.OutputAssets.AddNew(inputAsset.Name + " as " + encodingPreset, AssetCreationOptions.None);

也许MSDN上的这个主题可以帮助您:http://msdn.microsoft.com/en-us/library/jj933290.aspx