繁体   English   中英

在.NET中使用Windows Azure Media Services SDK,如何使用自定义编码参数而不是预设字符串对动态包进行编码?

[英]Using Windows Azure Media Services SDK in .NET, how to encode to a dynamic package using custom encoding parameters instead of a preset string?

首先,一些背景信息。

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

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

我做了一些修改,因为代码开箱即用的效果不是很好。 无论如何,代码将源视频文件上传到Azure,使用媒体服务编码器的任务预设对其进行编码,并将播放URL输出到屏幕以进行平滑流和HLS播放。

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

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

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

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

怎么实现呢? 有些东西告诉我,我应该将一些XML格式的字符串传递给job.Tasks.AddNew方法的配置参数。 如果是这样,那么创建XML的推荐方法是什么?

谢谢!

您可以包括XML文件,并可以修改xml文件,根据您的要求,您可以找到“H264自适应比特率MP4设置SD 16:9”的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM