【问题标题】:Azure Media Services - encoding 4K UHD video with v3Azure 媒体服务 - 使用 v3 编码 4K UHD 视频
【发布时间】:2018-11-10 01:12:30
【问题描述】:

我创建了一个库,使用 v3 API (.NET Core) 在 Azure 中对视频进行编码。我成功地将编码提高到 FHD。 但后来我尝试编码 4k UHD 视频(基于 How to encode with a custom TransformH264 Multiple Bitrate 4K 文章)。 所以,这是我创建这个变换的代码:

        private static async Task<Transform> Ensure4kTransformExistsAsync(IAzureMediaServicesClient client,
        string resourceGroupName,
        string accountName)
    {
        H264Layer CreateH264Layer(int bitrate, int width, int height)
        {
            return new H264Layer(
                profile: H264VideoProfile.Auto,
                level: "auto",
                bitrate: bitrate, // Note that the units is in bits per second
                maxBitrate: bitrate,
                //bufferWindow: TimeSpan.FromSeconds(5),    // this is the default
                width: width.ToString(),
                height: height.ToString(),
                bFrames: 3,
                referenceFrames: 3,
                adaptiveBFrame: true,
                frameRate: "0/1"
            );
        }

        // Does a Transform already exist with the desired name? Assume that an existing Transform with the desired name
        // also uses the same recipe or Preset for processing content.
        Transform transform = await client.Transforms.GetAsync(resourceGroupName, accountName, TRANSFORM_NAME_H264_MULTIPLE_4K_S);

        if (transform != null) return transform;

        // Create a new Transform Outputs array - this defines the set of outputs for the Transform
        TransformOutput[] outputs =
        {
            // Create a new TransformOutput with a custom Standard Encoder Preset
            new TransformOutput(
                new StandardEncoderPreset(
                    codecs: new Codec[]
                    {
                        // Add an AAC Audio layer for the audio encoding
                        new AacAudio(
                            channels: 2,
                            samplingRate: 48000,
                            bitrate: 128000,
                            profile: AacAudioProfile.AacLc
                        ),
                        // Next, add a H264Video for the video encoding
                        new H264Video(
                            // Set the GOP interval to 2 seconds for both H264Layers
                            keyFrameInterval: TimeSpan.FromSeconds(2),
                            // Add H264Layers
                            layers: new[]
                            {
                                CreateH264Layer(20000000, 4096, 2304),
                                CreateH264Layer(18000000, 3840, 2160),
                                CreateH264Layer(16000000, 3840, 2160),
                                CreateH264Layer(14000000, 3840, 2160),
                                CreateH264Layer(12000000, 2560, 1440),
                                CreateH264Layer(10000000, 2560, 1440),
                                CreateH264Layer(8000000, 2560, 1440),
                                CreateH264Layer(6000000, 1920, 1080),
                                CreateH264Layer(4700000, 1920, 1080),
                                CreateH264Layer(3400000, 1280, 720),
                                CreateH264Layer(2250000, 960, 540),
                                CreateH264Layer(1000000, 640, 360)
                            }
                        ),
                        // Also generate a set of PNG thumbnails
                        new PngImage(
                            start: "25%",
                            step: "25%",
                            range: "80%",
                            layers: new[]
                            {
                                new PngLayer(
                                    "50%",
                                    "50%"
                                )
                            }
                        )
                    },
                    // Specify the format for the output files - one for video+audio, and another for the thumbnails
                    formats: new Format[]
                    {
                        // Mux the H.264 video and AAC audio into MP4 files, using basename, label, bitrate and extension macros
                        // Note that since you have multiple H264Layers defined above, you have to use a macro that produces unique names per H264Layer
                        // Either {Label} or {Bitrate} should suffice

                        new Mp4Format(
                            "Video-{Basename}-{Label}-{Bitrate}{Extension}"
                        ),
                        new PngFormat(
                            "Thumbnail-{Basename}-{Index}{Extension}"
                        )
                    }
                ),
                OnErrorType.StopProcessingJob,
                Priority.Normal
            )
        };

        const string DESCRIPTION = "Multiple 4k";
        // Create the custom Transform with the outputs defined above
        transform = await client.Transforms.CreateOrUpdateAsync(resourceGroupName, accountName, TRANSFORM_NAME_H264_MULTIPLE_4K_S,
            outputs,
            DESCRIPTION);

        return transform;
    }

但作业最终出现以下错误:

作业以错误结束:致命服务错误,请联系支持人员。 发生了错误。阶段:ProcessSubtaskRequest。代码:System.Net.WebException。

我确实使用 S3 Media Reserved Unit 进行编码。那么,有什么方法可以让它发挥作用吗?

【问题讨论】:

  • social.msdn.microsoft.com/Forums/en-US/… 中的回复,请分享详细信息,例如工作名称、媒体服务帐户名称、区域/数据中心名称?如果您愿意,可以通过 amshelp@microsoft.com 与我们联系。我们将需要查看日志以确定失败的原因

标签: azure video-encoding azure-media-services


【解决方案1】:

将解决方案发回此线程以确保完整性

  1. sample 代码(RunAsync() 方法)中存在错误,导致作业使用不正确的输出资产。该错误现已修复。
  2. 正在解决错误处理中的一个相关错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多